初入MySql,以下记录遇到的错误。
在官网上下载了MySql 8.0版本,地址https://dev.mysql.com/downloads/mysql/
在根据教程的提示下成功安装完成,开启服务,于是使用heidisql进行连接,发现报错:Access denied for user 'root'@'localhost' (using password: YES)。于是前往百度进行查找。
在网上很多答案都是找到my.ini文件夹,可能有些人在mysql安装路径下找不到,其实是在:C:\ProgramData\MySQL\MySQL Server 8.0下。
话不多说,各大网友统一操作是
1、关掉服务
2、在my.ini中的[mysqld]加上:skip-grant-tables。 使其跳过权限检查.
3、再打开服务
在以上操作过程中,遇上以下几点问题:
1、在关掉服务命令:net stop mysql时,出现系统错误5,这个是需要将cmd命令设置成管理员权限,但是我在C:\Windows\System32与C:\Windows\System64文件夹下没有找到cmd的设置管理员权限的按钮,于是在任务栏中的搜索里输入cmd,找到了一个快捷键,实际使用的还是C:\Windows\System32中的cmd,但是这里可以设置管理员权限,设置完成,问题解决。
2、后面发现skip-grant-tables,这句话适用于MySql 5的版本,不适用于MySql 8的版本。
于是只能另找出路。
后面找的内容也比较多,不好贴出路径,比较零散。就在此总结一下吧。
1、用管理员权限打开cmd。
2、关闭服务:net stop mysql
3、在my.ini中的[mysqld]中加入 “shared-memory”。
4、cmd中输入:mysqld --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" --console --skip-grant-tables
(跳过密码),我等待的时间有点长,差点以为失败了,注意看信息,若没有操作第三步,这里会出现[Error][Server] TCP/IP, --shared-memory, or --named-pipe should be configured on NT OS的提示
5、重新打开服务: net start mysql
6、登录MySql: mysql -uroot -p
部分内容参考文章:https://blog.csdn.net/cartoon_/article/details/80344637
再重新登录就可以了。
在使用C++连接MySQL时,出现了“Authentication plugin 'caching_sha2_password' cannot be loaded”错误。
翻了翻资料,这个是由于MySQL8.0更换了身份验证(caching_sha2_password)之前身份验证是(mysql_native_password)
所以需要修改加密规则。
1、登录MySQL:mysql -u root -p.
2、修改加密规则:ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
3、更新用户密码:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
4、刷新权限:FLUSH PRIVILEGES;
5、重置密码:alter user 'root'@'localhost' identified by 'passwork';
在进行登录OK。
参考网址:https://blog.csdn.net/weixin_40845165/article/details/84076691