错误代码:
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';
刷新后启用。