1. 安装好Docker ( 教程请看此分类中上一篇文章 )
2. 通过Docker拉取MySQL镜像, 不加版本号的话, 默认是最新版 ( 8.0 )
docker pull mysql
3. 使用命令查看是否拉取成功:
docker images
成功的话, 会显示MySQL镜像, 如下图:
4. 使用 3306 端口启动 MySQL 并暴露此端口; 并设置自动启动
--restart=always 设置自动启动
--name mysql 设置容器名称
MYSQL_ROOT_PASSWORD=xxx xxx表示root密码
-d mysql 要启动的镜像名称
docker run -p 3306:3306 --restart=always --name mysql -e MYSQL_ROOT_PASSWORD=xxx -d mysql
5. 此时, 还无法通过外部连接MySQL, 因为默认只能通过本机登录, 我们要登入docker中的MySQL容器, 设置授权任意地点登录, 并且由于8.0开始, 密码加密方式与旧版不同, 为了兼容旧版登录, 要一并更改密码加密方式; 另外, 我们要根据项目需要, 添加用于开发/生产的用户;
docker exec -it mysql /bin/bash # -it xxx xxx表示你刚刚设置的容器名称
登录MySQL并输入密码
mysql -uroot -p
开始更改root密码加密方式, 并且设置外部登录:
由于默认只有 root@localhost 用户, 我们需要先添加 root@% 用户, %表示任意地点登录; 其中 xxx 替换成你要设置的密码
( docker 中的MySQL8.0 默认携带了root@%用户, 我们只需要修改密码加密方式即可;
ALTER USER 'root'@'%' IDENTIFIED BY 'xxx' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'xxx';
flush privileges;
添加用户; 修改该用户的加密方式; 为用户设置权限; 我这里以test为例, 并设置所有权限, 实际项目中, 只设置需要用到的权限即可; 最后别忘了刷新权限;
create user 'test'@'%' identified by 'xxx';
alter user 'test'@'%' identified by 'xxx' password expire never;
alter user 'test'@'%' identified with mysql_native_password by 'xxx';
grant all on *.* to 'test'@'%' ;
flush privileges;
使用 Navicat 等数据库连接软件进行测试; 别忘了开放3306端口哦 :)