docker安装mysql8.0

目的:记录安装过程的命令和遇到的坑!

1.拉取mysql8.0官方镜像

docker pull mysql:8.0

2.启动命令

docker run --name mysql --restart=always -p 3306:3306 --privileged=true -v /root/mysql/conf/my.cnf:/etc/mysql/my.cnf -v /root/mysql/data:/var/lib/mysql -v /root/mysql/log:/var/log/mysql -v /root/mysql/mysql-files:/var/lib/mysql-files -e MYSQL_ROOT_PASSWORD=ABC123456789! -d mysql:8.0

可能遇到的坑

2.0 /root/mysql/my.cnf

[mysqld]
lower_case_table_names=1
#东8时区
default-time_zone='+8:00'

#设置Client字符集保证中文无误
init-connect="SET collation_connection=utf8mb4_0900_ai_ci"
init_connect="SET NAMES utf8mb4"
skip-character-set-client-handshake

 

2.1 mysqld: Error on realpath() on ‘/var/lib/mysql-files’ (Error 2 - No such file or directory…

这个是没挂载 ,下面的命令导致

-v /root/mysql/mysql-files:/var/lib/mysql-files

3. docker ps 检查启动状态是否up

4. 进入容器

docker exec -it mysql /bin/bash

5.登录mysql

mysql -uroot -p

这里可能会遇到一个坑,就是输入启动命令中设置的ROOT密码(

ABC123456789!

)一直报错,这里只有走mysql重置密码流程。

6.在挂载的my.cnf配置文件中加上

[mysqld]
skip-grant-tables

7.重启mysql docker restart mysql

8.再次进入容器 到输入密码这一步 直接按两次回车 进入 数据库操作界面

9.修改root密码及远程连接权限

use mysql;

select user,authentication_string,host from user;

update user set authentication_string='新密码' where user='root';//这里如果报错 ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement。需要先执行一下flush privileges;再执行本条语句

update user set host='%' where user='root';  //开启远程

flush privileges;

10.修改my.cnf,去掉免密码登录,重启mysql即可。

 

posted @ 2022-11-17 21:45  White_白  阅读(1401)  评论(0编辑  收藏  举报