安装Mysql
sudo mkdir -p /opt/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(工作账号),并授予全部权限(推荐)
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