Navicat connects to Alibaba Cloud and reports MySQL 2059-authentication plugin'caching_sha2_password' .....1、ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'localhost':

MySQL :80

Cause of error: MySQL new version (8 over version ) of user logins encryption is [caching_sha2_password], Navicat user login account does not support this encryption.

1. Connection error

2. Log in to mysql, the same goes for the server on the cloud

3. First check the encryption method

show variables like 'default_authentication_plugin';

4. View the information of the local mysql user

select host,user,plugin from mysql.user; 可以看到root账户的加密方式是caching_sha2_password;

5. Navicat does not support the user login account encryption method of the new version of MySQL , so below we need to modify the encryption method of the root account to [mysql_native_password] , as shown in the figure, enter:

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

6. Finally, reopen Navicat to connect to MySQL , and you can successfully connect with the root account.

6.1. Configure Alibaba Cloud server security group rules:

6.2. Configure external network connection authorization:

 #选择mysql数据库 use mysql; #修改root 用户的连接地址现在  localhost 为本机 也可指定固定ip 此处 % 开启所有ip访问 update user set host='%' where user='root'; #刷新权限 flush privileges;

6.3, test connection

Encounter problems:

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

Reason: The host configured by the database user is %, and you cannot connect using'root'@'localhost'.

1.1, first log in to mysql

mysql -u root -p

1.2, enter the password

mysql> use mysql;mysql> select user,host from user; +------------------+-----------+| user             | host      |+------------------+-----------+| root             | %         || admin            | localhost || mysql.infoschema | localhost || mysql.session    | localhost || mysql.sys        | localhost || zhangj           | localhost |+------------------+-----------+

What you might perform is:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123';

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123';

2. The problem of MySQL resetting the login password

2.1. Check the initial password, which is used to log in to MySQL for the first time

grep "A temporary password" /var/log/mysqld.log

2.2. After installing mysql-server, run mysql_secure_installation to initialize the password

--为root用户设置密码--删除匿名账号--取消root用户远程登录--删除test库和对test库的访问权限--刷新授权表使修改生效  通过这几项的设置能够提高mysql库的安全。 建议生产环境中mysql安装这完成后一定要运行一次mysql_secure_installation,相关操作如下: [[email protected] ~]# mysql_secure_installationNOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQLSERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!In order to log into MySQL to secure it, we'll need the currentpassword for the root user. If you've just installed MySQL, andyou haven't set the root password yet, the password will be blank,so you should just press enter here.Enter current password for root (enter for none):<–初次运行直接回车OK, successfully used password, moving on…Setting the root password ensures that nobody can log into the MySQLroot user without the proper authorisation.Set root password? [Y/n]    #是否设置root用户密码,输入y并回车或直接回车New password:               #设置root用户的密码Re-enter new password:      #再输入一次你设置的密码Password updated successfully!Reloading privilege tables..… Success!By default, a MySQL installation has an anonymous user, allowing anyoneto log into MySQL without having to have a user account created forthem. This is intended only for testing, and to make the installationgo a bit smoother. You should remove them before moving into aproduction environment.Remove anonymous users? [Y/n]   #是否删除匿名用户,生产环境建议删除,所以直接回车… Success!Normally, root should only be allowed to connect from 'localhost'. Thisensures that someone cannot guess at the root password from the network.Disallow root login remotely? [Y/n] #是否禁止root远程登录,根据自己的需求选择Y/n并回车,建议禁止… Success!By default, MySQL comes with a database named 'test' that anyone canaccess. This is also intended only for testing, and should be removedbefore moving into a production environment.Remove test database and access to it? [Y/n] #是否删除test数据库,直接回车- Dropping test database…… Success!- Removing privileges on test database…… Success!Reloading the privilege tables will ensure that all changes made so farwill take effect immediately.Reload privilege tables now? [Y/n] #是否重新加载权限表,直接回车… Success!Cleaning up…All done! If you've completed all of the above steps, your MySQLinstallation should now be secure.Thanks for using MySQL![[email protected] ~]#


1. Open the MySQL command line client;

2. Enter the password you set when you installed MySQL and log in to the client;

3. Check the encryption method;

4. View the information of the local mysql user;

5. Modify the encryption method of the root account to [mysql_native_password];

6. Reopen Navicat and connect to MySQL.

Work hard every day and make progress every day