MySQL远程连接

6/5/2023 MySQLubuntu

通过对MySQL进行配置,让MySQL可以通过远程连接的方式被访问。

# 一、场景

  1. 已经通过apt install mysql-server方式安装好了Mysql
  2. 希望Mysql中的root用户可以使用任意IP地址以密码认证的方式连接MySQL

# 二、实施步骤

# 1. 使用debian.cnf中的用户名和密码,登录到MySQL

# 获取安装MySQL时自动创建的用户名以及其密码
sudo cat /etc/mysql/debian.cnf

# 下面是输出的debian.cnf文件的内容
# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host     = localhost
user     = debian-sys-maint
password = qxsJYkUV9gQn7Z5C
socket   = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host     = localhost
user     = debian-sys-maint
password = qxsJYk1kuyQn7Z5C
socket   = /var/run/mysqld/mysqld.sock

# 登录到mysql
mysql -udebian-sys-maint -pqxsJYk1kuyQn7Z5C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# 2. 切换到名为mysql的实例

USE mysql;
1

# 3. 修改root用户的身份认证插件为mysql_native_password,即本地密码

UPDATE user SET plugin="mysql_native_password" WHERE user="root";
1

# 4. 修改root用户密码为123456

UPDATE user SET authentication_string=PASSWORD("123456") WHERE user='root';
1

在Mysql8.0以上会出现PASSWORD函数被废弃的情况,需要使用下面的方式:

ALTER USER 'root'@'localhost' IDENTIFIED
-> WITH mysql_native_password BY '123456';
1
2
  • 注意: 上述修改的是root@localhost这一条记录的密码。
  • 为了方便展示,该条指令进行了换行,其中的“->”是换行标记,无需输入。

# 5. 允许任何ip地址登录root用户。其中的"%"符号表示任意地址

UPDATE user SET host="%" WHERE user="root";
1

# 6. 立即生效刚才的修改

flush privileges;
1

# 7. 退出mysql

exit;
1

# 8. 到mysql的配置文件中,注释掉root用户的本地绑定。首先打开配置文件

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
1

# 9. 找到mysqld.cnf中的bind-address=127.0.0.1这一行,在前面加上#号。

添加注释后的效果如下

# bind-address=127.0.0.1
1

注释掉该行后,通过:wq保存退出

# 10. 重启mysql服务

$ sudo systemctl restart mysql;
1

# 11. 至此则可以在同网络中的其它计算机上的远程连接工具,使用root用户身份连接虚拟机中的mysql了

Last Updated: 3/2/2024, 11:36:32 AM