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即可。