小弟初来乍到,分享一些工作学习中遇到的问题和解决方式,如有不准确或是有错误的地方,希望不吝赐教,谢过了。 --Dogtwo
处理某问题时遇到的MySQL问题及解决方案.
1.随着Project数量越来越多,DB的备份文件大小也越来越大,难以导入。
之前导入备份DB时采用的方法有两种:
1.将导出的.sql文件打开,复制内容执行。
2.WorkBench import.
问题:.sql文件大小过大,以上方法均不能正确执行,程序未响应。
解决方法: source命令。
涉及到的命令如下:
mysql -u root -p
输入密码
source path/xxx.sql
2.Prod DB备份成功导入本地,又出现了新的问题,客户端连接失败。
客户端连接caching-sha2-password问题。
MySQL Error: Authentication plugin 'caching_sha2_password' not supported by any of avaliable plugins
产生原因:
Server环境DB版本为MySQL 5.7.17
本地环境为 MySQL 8
由于SHA1算法被破解,所以MySQL8之后都升级了成了sha2算法。
MySQL8默认的认证插件是cacheing_sha2_password插件,原来的版本使用的是mysql_native_password插件,这使得原来的MySQL连接客户端出现认证失败的问题。
所以有两种方式可以解决问题:
将服务端的加密方式修改为sha1
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #修改加密规则 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; #更新一下用户的密码 FLUSH PRIVILEGES; #刷新权限 ALTER user 'root'@'localhost' identified by '123qwe'; #再重置下密码
但笔者使用这种方法未生效,原因待查。另外,关于当前版本MySQL所使用的默认插件可以在MySQL Server自带库MySQL表user中查看(Plugin字段),这个库在DB查看工具中(WorkBench等)默认不显示,建议使用命令行手动查看。
强客户端的加密方式修改为sha2 (未亲测)
3.将MySQL安装为Service的方法
将文件复制至C:Program FilesMySQL下,在bin文件中使用命令:
Mysqld --install.
4.Store Procedures DEFINER=`user`@`host`
Store Procedures处理固定查询很方便,但是在不同环境间切换也会有一些问题。
在生成SP时,若没有定义DEFINER,则系统会默认加上DEFINER=`user`@`host`,此处的user及host为当前Connect中的user及host,当不同环境中user或host不同时会产生error,此时更改SP中DEFINER定义或更换Connect连接对象即可解决。
5.ErrorCode 1055
这个Error有时会遇到,这里讲的很好,不再赘述了.
未完待续..
另 SHA1算法是由王小云教授(1966年8月出生于山东诸城,密码学家,中国科学院院士,清华大学高等研究院杨振宁讲座教授,清华大学密码理论与技术研究中心主任)及其团队攻破,这个团队还曾提出了关于MD5的破解的改进。有兴趣可以了解一下.