无论你是虚拟机还是云服务器,mysql的远程访问始终是有先后逻辑顺序的。
为什么要写这一个博客呢,因为有很多人安装了mysql但远程访问搞得很头疼,我自己一个笔记,也还可以给更多人帮助。这不就是双赢吗!!
不多说直接上教程
检查判断问题→如果有问题→1:更改mysql配置,2:进行mysql赋权。(就两个步骤,简单且实用)
一:首先机器上要有mysql
你的mysql一定要安装成功,因为这里只讲mysql远程访问的问题。
如果您的系统安装了netstat工具,可以使用以下命令来检查监听3306端口的服务:
netstat -tulnp | grep 3306
一共有两种情况:
第一种会显示:(netstat
命令输出结果,MySQL 服务正在监听本地回环地址(127.0.0.1)上的3306端口,并且处于侦听状态(LISTEN)。这意味着 MySQL 服务已经启动,并且准备好接受来自本地机器的连接。)
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
第二种会显示:(mysqld
服务现在正在监听所有IP地址(0.0.0.0)上的3306端口,并且处于侦听状态(LISTEN)。这表明MySQL服务已经配置为接受来自任何IP地址的连接请求。)
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 3515/mysqld
如果是第二种:远程服务就肯定启动成功了。如果是第一种就接着往下看。
二:netstat出现是第一种情况(是需要更改mysql系统文件的)
您需要确保 MySQL 配置文件(通常是 /etc/my.cnf
或 /etc/mysql/my.cnf
)中的 bind-address
配置项设置为监听所有网络接口或特定的外部IP地址。
要使 MySQL 监听所有网络接口,您可以将 bind-address
设置为 0.0.0.0
:
[mysqld]
bind-address = 0.0.0.0
记住bind-address = 0.0.0.0一定要放在【mysqld】的下面。(更改后保存就可以了)
三:进入mysql执行赋权的命令
进入mysql的命令为:(输入以下代码回车,再输入密码)
mysql -uroot -p
进入mysql后直接执行如下代码进行赋权。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
然后接着再输入一句:(必须需要输入下面这条命令,才能将上面这条语句赋权!)输入完成后就可以退出mysql了。用exit;命令可以退出。
FLUSH PRIVILEGES;
如果不确定赋权成功(可以查看)如下就是方法
use mysql;
select host from user where user='root';
如果是上图所示,就是不正确,正确的应该会多一个%号在localhost的上面。
如果没有问题就接着下面操作
现在直接重启mysql:
systemctl restart mysqld
然后再用(就可以实现netstat出现的第二种结果了)
netstat -tulnp | grep 3306