首页 > 技术文章 > MySQL 8.0版本的一些登陆问题

coolbaby 2021-12-31 18:50 原文

错误代码:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'exit()' at line 1

  or

ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'localhost'

  or

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

  or

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

  or

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '('*******') WHERE User='root'' at line 1

  以上这么多错误,总的来说就是语法错误;输入密码正确,但就是进不去;就算跳过密码,改密码的时候,没法改。(仅针对MySQL8.0版本)

 

解决方法:

  很简单,改密码。

 

密码改了还不行的原因:

  1、MySQL8.0版本不能通过直接修改mysql.user表来更改密码;

  2、authentication_string字段下只能是MySQL加密后的43位字符串密码;

 

解决措施:

1、清空原密码;

修改my.cnf文件

vim /etc/my.cnf

加上

skip-grant-tables

保存更改并重启MySQL服务

systemctl restart mysqld.service

重启之后直接mysql命令,秒进mysql

然后清空root密码

UPDATE user SET authentication_string='' WHERE user='root';

然后刷新

flush privileges;

exit退出,把插入到my.cnf的skip-grant-tables去掉,然后重启MySQL。

2、已清空root密码,修改root密码;

进入MySQL(上步已清空密码,故可以进入)。

修改密码操作(注意区分作用域Host):

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY "***";

  or(如果作用域localhost,则运行下面代码)

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY "***";

返回以下结果则成功

Query OK, 0 rows affected (0.00 sec)

刷新,然后退出MySQL;

再次进去,发现成功!

 

总结:

  MySQL 5.*的版本修改密码命令为

UPDATE user SET authentication_string="123456" WHERE user="root";

  MySQL 8.*的版本修改密码命令为

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY "123456";

  可以看出,5.*之后的版本取消了password函数,故不适用于8.*版本。

 

附录:

1、修改Host为%:

update user set host='%' where host= 'localhost';

2、centos 7从零开始安装MySQL 8.0

首先,卸载默认安装的MariaDB(第二个命令根据自己情况删除,因为文件名称可能不同)

rpm -qa | grep -i mariadb
rpm -e --nodeps mariadb-libs

然后,下载MySQL仓库,并安装(同一目录下操作)

wget https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm
yum -y install mysql80-community-release-el7-3.noarch.rpm

最后,安装MySQL数据库

yum -y install mysql-community-server

3、MySQL服务操作命令

开启MySQL服务:

systemctl start mysqld.service

关闭MySQL服务:

systemctl stop mysqld.service

重启MySQL服务:

systemctl restart mysqld.service

4、查看MySQL默认登陆密码命令

cat /var/log/mysqld.log | grep password

5、远程连接问题

如果远程连接提示:plugin caching_sha2_password错误

原因:MySQL8.0默认密码策略与5.*版本不同

解决方法:(将plugin修改为mysql_native_password即可)

update user set plugin = 'mysql_native_password' where user = 'root';

刷新后启用。

推荐阅读