长时间没有折腾云服务器上的mysql了,今天再次使用Navicat连接云服务器上的mysql时,输入密码报错!
1130 - Host ‘119.130.212.168’ is not allowed to connect to this MySQL server
1.于是Royal TSX 远程服务器查看mysql的状态
systemctl status mysqld
结果显示是正常up的!
2.输入密码尝试登录
mysql -u root -p
结果多次尝试后发现还是不对,曾经可以的,没理由呀!
3.那就修改个密码试试
修改MySQL的配置文件,在my.cnf文件的**[mysqld]**下添加一行(是通过修改配置文件的方式修改为跳过授权表进入),保存退出
vim /etc/my.cnf
4.按i 键进入input状态,在[mysqld]后面加上 skip-grant-tables,如下
5.输入完后,按esc键,再按住shift键输入":wq!",保存!
6.重启MySQL服务:sudo systemctl restart mysqld
7.修改密码
mysql
use mysql
mysql -u root -p
enter 输入密码后,输入一下命令重置密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '我的密码';
结果会提示错误,如下:
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
因为我们在上面改了skip-grant-tables,所以执行以下强制执行语句后再重新改密码后就可以啦!
flush privileges;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '我的密码';
结果还是报错:
ERROR 1396 (HY000): Operation ALTER USER failed for ‘root‘@‘localhost‘
8.检查user list,是否存在 root这个user!我是root user都丢了,检查命令如下:
select user,host from user;
结果发现竟然没有root,但是Navicat连接以及springboot项目连接都是以root作为user,那当然会连接不上啦!
既然丢失了,那就补上root 这个user啦!
insert into user(User,authentication_string,ssl_cipher,x509_issuer,x509_subject) values('root','','','','');
添加权限
update user set Host='%',select_priv='y', insert_priv='y',update_priv='y',Alter_priv='y',delete_priv='y',create_priv='y',drop_priv='y',reload_priv='y',shutdown_priv='y',Process_priv='y',file_priv='y',grant_priv='y',References_priv='y',index_priv='y',create_user_priv='y',show_db_priv='y',super_priv='y',create_tmp_table_priv='y',Lock_tables_priv='y',execute_priv='y',repl_slave_priv='y',repl_client_priv='y',create_view_priv='y',show_view_priv='y',create_routine_priv='y',alter_routine_priv='y',create_user_priv='y' where user='root';commit;
再次检查就有root 这个user啦!
9.给root 这个user设置密码,重新执行步骤7,注意root -> %, 还是 root -> localhost,请自行检查。
flush privileges;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '我的密码';
10.成功如下:
11.移除 步骤4的 skip-grant-tables,并重启mysql
systemctl stop mysqld
systemctl start mysqld
systemctl status mysqld
尝试用新密码登录看是否成功
mysql
use mysql
mysql -u root -p
12.重新连接试试即可!