Bootstrap

Docker安装Mysql

安装Mysql

  • 创建挂载卷目录
sudo mkdir -p /opt/mysql
  • 下载Mysql镜像
docker pull mysql:latest
  • 运行容器(挂载${HOME}:/root卷,方便执行sql脚本等)
$ docker run -d -p 3306:3306 \
--privileged=true \
--restart=always \
-v ${HOME}:/root \
-v /opt/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-v /opt/mysql/logs:/logs \
-v /opt/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
--name mysqldb \
mysql:latest
  • 登录数据库
$ docker exec -ti mysqldb mysql -uroot -p123456
mysql> select @@version;
+-----------+
| @@version |
+-----------+
| 8.3.0     |
+-----------+
  • 删除容器
docker rm -f mysqldb

账号策略

  • 允许root用户localhost无密码访问,并删除root的远程访问权限
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost';
mysql> DELETE from mysql.user where user='root' and host='%';
mysql> FLUSH PRIVILEGES;
  • 创建admin(工作账号),并授予全部权限(推荐)
# 创建admin(工作账号),并授予全部权限
mysql> CREATE USER 'admin'@'%' IDENTIFIED BY '<Password>';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
  • 查看用户信息
mysql> SELECT user,host,plugin,authentication_string FROM mysql.user;
+------------------+-----------+-----------------------+----------------------------+
| user             | host      | plugin                | authentication_string      |
+------------------+-----------+-----------------------+----------------------------+
| admin            | %         | caching_sha2_password | $A$005$TLIR..0OTYGWEBUSED  |
| root             | localhost | caching_sha2_password |                            |
| mysql.infoschema | localhost | caching_sha2_password | $A$005$TLIR..0OTYGWEBUSED  |
| mysql.session    | localhost | caching_sha2_password | $A$005$TLIR..0OTYGWEBUSED  |
| mysql.sys        | localhost | caching_sha2_password | $A$005$TLIR..0OTYGWEBUSED  |
+------------------+-----------+-----------------------+----------------------------+
  • 其他命令
# 修改密码
mysql> ALTER USER '用户名'@'主机名' IDENTIFIED BY '新密码';

参考链接

https://hub.docker.com/_/mysql

;