一些命令
# 拉取MySQL 8.0镜像
docker pull mysql:8.0
# 查看镜像是否下载成功
docker images | grep mysql
# 先在宿主机创建数据目录
mkdir -p /data/mysql/data
mkdir -p /data/mysql/conf
mkdir -p /data/mysql/logs
# 创建自定义配置文件
cat > /data/mysql/conf/my.cnf << 'EOF'
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
default-time-zone=+08:00
max_connections=1000
innodb_buffer_pool_size=1G
innodb_log_file_size=256M
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
EOF
# 运行容器
docker run -d \
--name mysql8 \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
-e MYSQL_DATABASE=testdb \
-e MYSQL_USER=admin \
-e MYSQL_PASSWORD=123456 \
-v /data/mysql/data:/var/lib/mysql \
-v /data/mysql/conf/my.cnf:/etc/mysql/conf.d/my.cnf \
-v /data/mysql/logs:/var/log/mysql \
--restart=unless-stopped \
mysql:8.0
验证安装
# 1. 查看容器状态
docker ps | grep mysql8
# 2. 查看启动日志
docker logs mysql8
# 3. 进入容器
docker exec -it mysql8 bash
# 4. 在容器内连接MySQL
mysql -uroot -p123456
# 5. 执行简单查询
mysql> SHOW DATABASES;
mysql> SELECT VERSION();
mysql> SHOW VARIABLES LIKE 'character%';
mysql> EXIT;
# 6. 退出容器
exit
常用命令
# 重启MySQL
docker restart mysql8
# 停止MySQL
docker stop mysql8
# 启动MySQL
docker start mysql8
# 查看实时日志
docker logs -f mysql8
# 备份数据库
docker exec mysql8 mysqldump -uroot -p123456 --all-databases > backup.sql
# 恢复数据库
cat backup.sql | docker exec -i mysql8 mysql -uroot -p123456
远程访问配置
# 进入容器
docker exec -it mysql8 bash
# 连接MySQL
mysql -uroot -p123456
# 执行SQL授权远程访问
mysql> CREATE USER 'root'@'%' IDENTIFIED BY '123456';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
mysql> EXIT;
# 退出容器
exit
创建用户并授权
-- 1. 创建新用户(允许从任何主机连接)
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypassword123';
-- 2. 授予所有权限(根据需要调整)
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' WITH GRANT OPTION;
-- 3. 或者只给SELECT, INSERT, UPDATE权限
GRANT SELECT, INSERT, UPDATE ON testdb.* TO 'myuser'@'%';
-- 4. 刷新权限
FLUSH PRIVILEGES;
-- 4. 查看创建的用户
SELECT user, host FROM mysql.user;