文章目录
-
-
- [1. 确认容器端口映射](#1. 确认容器端口映射)
- [2. 修改 MySQL 用户权限(允许远程连接)](#2. 修改 MySQL 用户权限(允许远程连接))
- [3. 修改 MySQL 配置文件(可选)](#3. 修改 MySQL 配置文件(可选))
- [4. 在远程客户端测试](#4. 在远程客户端测试)
-
MySQL 容器支持远程访问
1. 确认容器端口映射
在 docker run
时已经用过 -p 3306:3306
,这会把宿主机的 3306 端口映射到容器的 3306 。
如果还没有,可以用下面命令重新运行容器:
bash
docker run --name mysql8 \
-e MYSQL_ROOT_PASSWORD=rootpassword \
-p 3306:3306 \
-d mysql:8.0.23
然后确认端口映射成功:
bash
docker ps
看 PORTS
一栏里是否有 0.0.0.0:3306->3306/tcp
。
2. 修改 MySQL 用户权限(允许远程连接)
进入容器的 MySQL:
bash
docker exec -it mysql8 mysql -uroot -p
输入你设置的 root 密码,然后在 MySQL 中执行:
sql
-- 允许 root 从任意主机连接(仅用于测试,不推荐生产环境)
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'rootpassword';
-- 或者给某个用户开放远程访问权限
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypassword';
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
这里的 %
表示允许从任意 IP 连接,你也可以改成具体 IP(更安全)。
3. 修改 MySQL 配置文件(可选)
有时 MySQL 默认只监听 localhost
,需要改配置:
-
进入容器:
bashdocker exec -it mysql8 bash
-
找到并编辑配置文件(一般在
/etc/mysql/my.cnf
或/etc/mysql/mysql.conf.d/mysqld.cnf
),确保 不要限制:ini[mysqld] bind-address = 0.0.0.0
-
重启容器:
bashdocker restart mysql8
4. 在远程客户端测试
在远程机器上使用 MySQL 客户端连接:
bash
mysql -h <宿主机IP> -P 3306 -u myuser -p