微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

docker安装mysql 8

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

docker run --name MysqL -e MysqL_ROOT_PASSWORD=123456 -d MysqL

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

mkdir -p ~/i/apps/MysqL/{conf,data}

 

3. 初始化配置文件

docker cp MysqL:/var/lib/MysqL ~/i/apps/MysqL/data

 

docker cp MysqL:/etc/MysqL/my.cnf ~/i/apps/MysqL/conf/my.cnf

 

4. 停止删除容器

docker rm -f MysqL

 

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

[root@wanfei ~]# cd ~/i/apps/MysqL/
$ cat <<EOF > start.sh
#!/bin/bash
HOST_NAME=MysqL.wanfei.xyz
REdis_DIR=`pwd`
docker stop MysqL
docker rm MysqL
docker run -d \\
    --hostname \${HOST_NAME} \\
    -p 3306:3306 \\
    --name MysqL \\
    --privileged=true \\
    -v \${REdis_DIR}/conf/my.cnf:/etc/MysqL/my.cnf \\
    -v \${REdis_DIR}/data/MysqL:/var/lib/MysqL \\
    -e MysqL_ROOT_PASSWORD=123456 \\
    MysqL
EOF

 

参数说明

  • --hostname \${HOST_NAME}: 设置访问的域名地址,${HOST_NAME}是上面定义的MysqL.wanfei.xyz这个地址
  • -p 3306:3306: 把容器内的3306端口映射到宿主机3306端口
  • --privileged=true: 给容器加上特定权限 。否则会chown: changing ownership of ‘/var/lib/MysqL/....‘: Permission denied
  • -v \${REdis_DIR}/conf/my.cnf:/etc/MysqL/my.cnf:把宿主机配置好的my.cnf放到容器内的这个位置中
  • -v \${REdis_DIR}/data/MysqL:/var/lib/MysqL:把MysqL持久化的数据在宿主机内显示,做数据备份
  • -e MysqL_ROOT_PASSWORD=123456: 指定数据库初始访问密码,第一次设置才有小,后面重启以修改的密码为准
  • MysqLMysqL镜像名,后面没有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)


 

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐