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 @   White_白  阅读(1458)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示