Docker安装MySQL 8

本文详细介绍使用Docker容器化MySQL 8的过程,包括自动下载镜像、配置文件初始化、生成启动脚本、修改密码及开启远程连接等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 运行容器,自动下载镜像

docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql

2. 创建主机挂载配置文件

mkdir -p /root/i/docker/mysql/{conf,data} && cd /root/i/docker/mysql/
  • conf存放配置文件
  • data存放数据库文件

3. 初始化配置文件

docker cp mysql:/var/lib/mysql /root/i/docker/mysql/data
  • 将数据库初始文件复制到/usr/mysql/data里面
docker cp mysql:/etc/mysql/my.cnf /root/i/docker/mysql/conf/my.cnf

4. 停止删除容器

docker rm -f mysql

5. 生成启动文件 - start.sh

cat <<EOF > start.sh
#!/bin/bash
MYSQL_DIR=`pwd`
docker stop mysql
docker rm mysql
docker run -d \\
    --restart always \\
    -p 3306:3306 \\
    --name mysql \\
    --privileged=true \\
    -v \${MYSQL_DIR}/conf/my.cnf:/etc/mysql/my.cnf \\
    -v \${MYSQL_DIR}/data/mysql:/var/lib/mysql \\
    -e MYSQL_ROOT_PASSWORD=123456 \\
    mysql
EOF

参数说明

  • --restart always: 在docker启动或者mysql遇到错误时,自动重启容器
  • -p 3306:3306: 把容器内的3306端口映射到宿主机3306端口
  • --privileged=true: 给容器加上特定权限 。否则会chown: changing ownership of ‘/var/lib/mysql/....‘: Permission denied
  • -v \${MYSQL_DIR}/conf/my.cnf:/etc/mysql/my.cnf:把宿主机配置好的my.cnf放到容器内的这个位置中
  • -v \${MYSQL_DIR}/data/mysql:/var/lib/mysql:把mysql持久化的数据在宿主机内显示,做数据备份
  • -e MYSQL_ROOT_PASSWORD=123456: 指定数据库初始访问密码,第一次设置才有小,后面重启以修改的密码为准
  • mysql:mysql镜像名,后面没有tag后,下载最新的tag,latest

6. 运行start.sh 启动mysql

[root@wanfei mysql]# sh start.sh 
mysql
mysql
f3d297633f4432495dc587d2860c212a371166897b6a380aceb0ebcdccc5dad8

7. 进入容器修改密码,开启远程连接

#进入容器
docker exec -it mysql /bin/sh
#进入mysql(有可能上面密码设置无效)
mysql -u root -p
#输入123456,如果失败,直接enter
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select host,user,plugin from user;
+-----------+------------------+-----------------------+
| host      | user             | plugin                |
+-----------+------------------+-----------------------+
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session    | caching_sha2_password |
| localhost | mysql.sys        | caching_sha2_password |
| localhost | root             | caching_sha2_password |
+-----------+------------------+-----------------------+
4 rows in set (0.00 sec)
#上面的root用户如果是localhost,只能localhost连接,不能远程连接,下面设置密码报错
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'xxxxxx';
ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'%'
#修改localhost为%
mysql> update user set host='%' where user='root';
Query OK, 1 row affected (0.14 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select host,user,plugin from user;
+-----------+------------------+-----------------------+
| host      | user             | plugin                |
+-----------+------------------+-----------------------+
| %         | root             | caching_sha2_password |
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session    | caching_sha2_password |
| localhost | mysql.sys        | caching_sha2_password |
+-----------+------------------+-----------------------+
4 rows in set (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'xxxxxx';
Query OK, 0 rows affected (0.02 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值