安装mysql镜像
docker pull mysql
-
查看镜像
docker images
结果如下图所示:
运行mysql
docker run --name=mysql -it -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
- -p 用于指定端口(外部端口:内部端口)
- --name用于定义名字
- MYSQL_ROOT_PASSWORD 定义密码
- -d用于指定要运行的镜像
- 通过
docker ps
来查看在运行的容器,找到mysql对应的CONTAINER ID。
- 然后执行
docker exec -it CONTAINER ID bash
进入bash,如图所示:
- 进入mysql
mysql -u root -p
输入密码,密码是上面运行mysql时候的密码,上面是123456
- 由于上面docker运行mysql的时候对外端口是3306,所以需要确保宿主机的防火墙设置允许从外部网络访问 3306 端口。其次,通过以下命令来确保mysql用户有权限从远程访问数据库:
创建用户:
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
这里的username和password可以自己设定,比如我设定为
CREATE USER 'chosenone'@'%' IDENTIFIED BY '111111';
这是在远程登陆时你所使用的用户和密码。
赋予权限:
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;
权限立即生效:
FLUSH PRIVILEGES;
- 现在可以通过以下命令在本机远程登录服务器docker中的数据库
mysql -h host_address -u username -p
替换 host_address 为你的宿主机的 IP 地址或域名,username 为你的 MySQL 用户名,然后输入密码。
比如我上面用的用户名和密码:
mysql -h ip -u chosenone -p111111
另外,因为在第3步运行mysql的时候,用的是3306的默认端口,如果你在第3步用的不是默认端口,记得在远程连接时指定端口号,用大写的-P指定, 比如用9999端口:
mysql -h ip -u chosenone -p111111 -P 9999
ps.
退出mysql => quit
,推出bash => exit
以上即可解决本地远程访问服务器docker中的mysql容器。