MySQL远程连接
qinsz 6/5/2023 MySQLubuntu
通过对MySQL进行配置,让MySQL可以通过远程连接的方式被访问。
# 一、场景
- 已经通过apt install mysql-server方式安装好了Mysql
- 希望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
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
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