远程连接MySQL
在我们初学MySQL的时候,一般都是在本地安装MySQL数据库,并且使用命令行或者Navicat连接,所以往往会忽略掉如何远程连接MySQL这个知识点,这太过局限,然而在实际运维中,访问数据库通常是远程的方式(抛开网络安全问题),大大提高开发效率。但MySQL默认是不开起远程连接的,所以需要一定的配置。
tips:
1.当前教程需要读者对MySQL的基础有所了解。
2.本教程使用Windows和Linux Ubuntu演示,CentOS用户在重启MySQL服务器会有所不同。
一、开启远程连接
-
查看MySQL是否在运行
- 请确保你的MySQL服务是启动状态,如果不确定是否启动,则可以尝试登录进MySQL。
-
开启远程连接
- Windows开启方式:
- 找到
my.ini
配置文件,通常在C:\ProgramData\MySQL\MySQL Server X.X\
(其中X.X是你所使用的MySQL数据库版本),在该目录下会有my.ini
配置文件。 - 打开该文件,在
[mysqld]
部分找到bind-address
,默认的值是127.0.0.1,我们需要修改为0.0.0.0。若在[mysqld]
部分中没有bind-address
,那就自己创建一个,创建方式为:bind-address = 0.0.0.0
,配置完后保存即可。
- 找到
- Linux开启方式:
- 使用
cat
命令查看一下是否是我们需要修改的配置文件:sudo cat /etc/mysql/my.cnf
,接下来配置方式和Windows方式相同,修改/创建bind-adress
并且修改值 - 当出现
!includedir
这些内容时,那么可能是采用引用的方式配置,这时需要进入/etc/mysql/mysql.conf.d
目录下,进入mysqld.cnf
文件下去修改bind-adress
值。
- 使用
- Windows开启方式:
二、重启MySQL服务
-
Windows下重启
net stop mysql80 # 关闭MySQL服务 net start mysql80 # 启动MySQL服务
-
Linux下重启
sudo systemclt restart mysql.service # 若是非Ubuntu系统,重启方式可能不太一样
三、创建新的MySQL用户
由于MySQL的root用户是比较敏感的身份,这里建立新的用户来进行远程登录。
-
创建新用户
CREATE USER 'your_name'@'%' IDENTIFIED BY 'your_password';
- 该命令为创建一个名为
your_name
的用户,%
为任意远程主机都可连接(如果只想让指定主机连接,那就可以设置该主机IP进去),your_password
为用户的密码。用户名和密码根据你的方式来。
- 该命令为创建一个名为
-
授予权限
GRANT ALL PRIVILEGES ON *.* TO 'your_name'@'%';
- 该命令中,
GRANT ALL PRIVILEGES
是授予your_name
这个用户的所有的权限(具体权限可根据你的方式来);ON *.*
是对所有数据库和所有的表生效;TO 'your_name'@'%'
表示将权限授予给your_name
的用户,%
表示该用户可以从任何IP地址连接到数据库。
- 该命令中,
-
重新加载授权表
FLUSH PRIVILEGES;
-
查看用户是否创建成功。
SELECT host,user FROM mysql.user
- 如果你创建的用户被显示出来并且host字段为
%
,那么你的用户就创建完成了。
- 如果你创建的用户被显示出来并且host字段为
四、远程连接
远程连接必须确保你能跟服务器通信,并且3306端口(默认端口)未被防火墙阻拦。
-
使用MySQL数据库命令连接
mysql -h <MySQL Servers IP> -u <USER> -p
-
使用Navicat连接
- 打开Navicat,添加新的连接,选择MySQL,连接名自定义,主机名设置为创建好的用户,端口默认是3306,密码为你设置好的密码,点击连接即可。