Mysql Server Docker
下载 MySql Server
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.28-linux-glibc2.17-x86_64-minimal.tar.xz
entrypoint.sh
Dockerfile
FROM debian:stable-slim
ENV PATH=/opt/mysql/bin:$PATH
COPY mysql-8.0.28 /opt/mysql/
COPY entrypoint.sh /opt/mysql/entrypoint.sh
RUN groupadd -r mysql && useradd -r -g mysql mysql
RUN apt-get update && apt-cache search libaio && apt-get install -y libaio1 numactl gosu libncurses5 && \
apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false && \
rm -rf /var/lib/apt/lists/*
RUN mkdir /docker-entrypoint-initdb.d/
EXPOSE 3306 33060
ENTRYPOINT ["/opt/mysql/entrypoint.sh"]
CMD ["mysqld"]
Build & Run
docker build . -t mysql:8.0.28
docker run -d --name mysql --pull missing \
--network docker_tts --network-alias mysql \
-e MYSQL_RANDOM_ROOT_PASSWORD=yes \
-p 3306:3306 \
-v /Users/tts/data/docker/mysql/my.cnf:/opt/mysql/my.cnf \
-v /Users/tts/data/docker/mysql/data:/data/mysql/data \
-v /Users/tts/data/docker/mysql/log:/data/mysql/log \
-v /Users/tts/data/docker/mysql/temp:/data/mysql/temp \
mysql:8.0.28 --defaults-file=/opt/mysql/my.cnf
root 用户设置
注意
当初始化完成,命令输出中会包含为 root 用户生成的随机密码,可以通过下面的命令提取密码:
docker logs mysql 2>&1 | grep GENERATED
# 输出中会打印出密码
GENERATED ROOT PASSWORD: Axegh3kAJyDLaRuBemecis&EShOs
当 server 已就绪,即可通过客户端连接到 Mysql server。
docker exec -it mysql mysql -u root -p
交互界面要求输入密码,即可输入刚刚获取到的随机密码,登录进去之后即可更改 root 用户的信息(记住改密码)。
ALTER USER CURRENT_USER() IDENTIFIED WITH caching_sha2_password BY 'password';
FLUSH PRIVILEGES;
如果控制台日志中未输出生成的随机密码,可尝试使用空密码登录。
修改 root 用户 Host
UPDATE mysql.user SET Host = '%' WHERE User = 'root';
FLUSH PRIVILEGES;