精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
锐英源精品原创文章,禁止转载和任何形式的非法内容使用,违者必究
MySQL8性能提升,可靠稳定,正在代替MySQL5.6版本,近期开发项目,设计方案指定使用MySQL8,但是在开发过程中遇到MySQL8C#连接失败问题,先说机器开发环境,有MySQL Workbench、动软代码生成器、phpstudy的MySQL5.6和两个MySQL服务,一个服务用3306端口,一个服务用3307端口,MySQL8用3307端口。
首先是用压缩包命令行--console方式进行了服务安装,修改了native_password模式,Workbench可以连接,动软不能连接,C#代码也不能连接。native_password模式在my.ini里加了
default_authentication_plugin=mysql_native_password
用mysql打开命令行,输入了:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
FLUSH PRIVILEGES;
动软还是不行,C#也不行。并且localhost命令行还报错,错误如下:
ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'localhost'。
用
ALTER USER 'root'@'%' IDENTIFIED BY 'root' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
上面的命令可以,但是C#还是连接不上。
后来查网络说是再建个普通用户,用localhost,可以,试了不用,C#改成普通用户也连接不上。
实在没办法,用MySQL8的非压缩包方式进行了安装,这种向导模式可以在窗口里进行配置,配置了端口3307还有native_password模式,这时候突然发现:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
能够正常执行了,这是和压缩模式安装最大的区别,这个可以了,信心倍增,虽然动软还是连接不上,检查了C#的连接字符串,C#也能够连接上了。连接字符串如下:
public static string ConnectionString = "Data Source=localhost;Database=energysafe;port=3307;user id=root;password=root";
动软连接不上,是因为动软太旧了,里面的Connecter版本也太旧了,连接不了MySQL8,连接MySQL5.6没问题。
总之,这问题主要卡在了ALTER USER处理上,有些用命令不能解决的问题,就要换环境了,比如这里的换安装模式,用向导窗口msi方式安装MySQL8。
公司注册号:410105000449586 豫ICP备08007559号 最佳分辨率 1024*768
地址:郑州大学北校区院内(文化路97号院)