Docker形式安装MySQL8

记于:2024-09-22 下午
地点:浙江省·温州市·家里
天气:雨天

背景#

项目需要,以docker形式安装MySQL8

命令#

1
2
3
4
5
docker run --name=mysql8 \
-p 3306:3306 \
--mount type=bind,src=/root/ysm.d/data/docker/mysql/conf/my.cnf,dst=/etc/my.cnf \
--mount type=bind,src=/root/ysm.d/data/docker/mysql/datadir,dst=/var/lib/mysql \
--restart always -d container-registry.oracle.com/mysql/community-server:8.4

配置文件和数据目录需要提前创建好
mkdir -p /root/ysm.d/data/docker/mysql/datadir -p /root/ysm.d/data/docker/mysql/conf
/root/ysm.d/data/docker/mysql/conf/my.cnf 内容如下(拷贝自mysql8.4默认配置):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/8.4/en/server-configuration-defaults.html

[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M

host-cache-size=0
skip-name-resolve
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
secure-file-priv=/var/lib/mysql-files
user=mysql

pid-file=/var/run/mysqld/mysqld.pid

启动后查看日志:

1
docker logs mysql8

获取初始密码,登录后进行修改

1
2
3
4
5
6
7
8
# 执行容器内mysql登录
docker exec -it mysql8 mysql -uroot -p
# 更新root密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password' ;
# 更新mysql.user表,将root用户的host字段改为%,最后刷新权限
use mysql;
update user set host = '%' where user = 'root' ;
flush privileges;

参考资料#