部署命令
注意conf文件在实际容器中的位置,有的版本是直接在/etc目录下,可以先创建一个容器进去看看
docker run --restart=always --privileged=true \
-v $PWD/mysql/data/:/var/lib/mysql \
-v $PWD/mysql/logs/:/var/log/mysql \
-v $PWD/mysql/conf/:/etc/mysql \
-v $PWD/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-p 3306:3306 --name mysql \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql
- 登录问题
在容器外登陆报错
ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded: /usr/lib64/mysql/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory
MySQL8.0.11版本默认的认证方式是caching_sha2_password ,而在MySQL5.7版本则为mysql_native_password
mysql密码机制介绍
此时进入容器内部登陆是可以的,通过容器内登陆修改认证方式
- 登陆问题:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
这个问题是mysql.sock文件默认路径和docker启动时映射路径不一致引起
有两种解决办法,一种是配置文件my.cnf修改socket路径,然后重启容器
还有一种简单的方法不需要重启容器,只需要增加一条软链接即可
ln -s 实际目录/mysql.sock /var/lib/mysql/mysql.sock
- 参数报错:
ERROR 1238 (HY000): Variable 'default_authentication_plugin' is a read only variable
写入my.cnf 文件后重启MySQL
- 编码问题:msql默认编码为character_set_server = Latin1
同样修改配置文件my.cnf