一般连不上mysql无非几种情况:
密码错误;
mysql没有设置让其他ip可以连接;
这里讨论的是在linux下的mysql两种都有情况。而我们的解决办法也比较简单,第一步、修改配置;第二步、修改密码;第三步、配置权限让所有ip都可以连上;第四步、刷新保存让配置生效;最后、验证一下。是不是非常简单。下面开始:
1.修改配置文件 my.cnf,那么这个文件在哪里呢,在服务器命令行中输入下面这句就能打开这个my.cnf文件了:
vi /etc/my.cnf
2.打开以后在配置文件 [mysqld] 下添加 skip-grant-tables,你说这句怎么输入?简单:按一下键盘上的Insert键,然后光标就一闪一闪的,代表可以输入。输入完,同时安心shift+:两个键,再输入!wq就会退出。
[mysqld]
skip-grant-tables
3.然后就可以用空密码的 root 用户连接到 MySQL,并且更改 root 口令了,输入下面这句(下面这句就不用使用密码对吧):
mysql -u root
然后就进入下面这个状态:
mysql>
在mysql后面输入:use
mysql;
然后再输入:update user set password=password('123456') where User='root';
这两句回车,就可以把root用户的密码改成123456.
mysql> use mysql;Database changedmysql> update user set password=password('123456') where User='root';Query OK, 3 rows affected (0.00 sec)Rows matched: 3 Changed: 3 Warnings: 0
注意:一般情况上面这两句就可以搞定,但是,(好像是mysql后面版本问题,password这个字段后面版本没有了,改成authentication_string)。所以,要用这句:
update user set authentication_string=password('123456') where user='root';
OK,改完了要记得刷新一下让它生效。输入:flush
privileges;
mysql> update user set password=password('123456') where User='root';ERROR 1046 (3D000): No database selectedmysql> use mysql;Database changedmysql> update user set password=password('123456') where User='root';Query OK, 3 rows affected (0.00 sec)Rows matched: 3 Changed: 3 Warnings: 0mysql> flush privileges;
最后输入:exit退出
mysql> update user set password=password('123456') where User='root';ERROR 1046 (3D000): No database selectedmysql> use mysql;Database changedmysql> update user set password=password('123456') where User='root';Query OK, 3 rows affected (0.00 sec)Rows matched: 3 Changed: 3 Warnings: 0mysql> flush privileges;Query OK, 0 rows affected (0.00 sec)mysql> exit
记得回来删除刚在my.cnf配置的那句,就是上面第1,2两步,把第2步的skip-grant-tables删除,然后保存。
9.激动人心的时候到了。这时候你就可以用新的密码登录了。赶快用navicat验证一下吧。如果你是远程连接,下面的主机ip地址记得改成你linux服务器的ip。
前面的修改已经搞定了,但是我们是要让所有设备都能远程数据库
一、在Linux上以root账号登录主机
二、在主机上登录MySQL
mysql -uroot -p123456
三、先删除原来的 root@%
用户(若之前没有创建,则跳过此步骤)
drop user 'root'@'%';
四、删除成功了,再创建用户 root@%
create user 'root'@'%' identified with mysql_native_password by '123456';
五、接着授权
grant all on *.* to 'root'@'%' with grant option;
六、刷新配置
flush privileges;
七、退出
exit;
来源地址:https://blog.csdn.net/anything14/article/details/127856256