记录docker部署mysql访问的一些坑
1、首次部署mysql我直接命令行启动:
docker run --restart=always -d
-v /disk/docker_mysql/mysql/conf/my.cnf:/etc/mysql/my.cnf
-v /disk/docker_mysql/mysql/logs:/logs
-v mysqlback:/var/lib/mysql
-p 3361:3306
–name my_mysql
-e MYSQL_ROOT_PASSWORD=123456
-e TZ=Asia/Shanghai
mysql:8.0.27 --lower-case-table-names=1
这个命令行我执行了,然后成功了,吭哧吭哧把数据导入,最后有一天我的data挂载目录爆了,然后mysql一不小心停了,然后我想着data目录copy到新的目录,然后再启动应该可以恢复数据,然而事与愿违,通过卷的方式恢复失败,搞不懂问题出在哪里,哪天有空再看看什么原因。不过本次记录是想让自己长教训,启动需要长期使用的container还是要用yaml配置文件,这样也好管理:
mysql-compose.yaml配置:
version: "2.2"
services:
mysql:
image: mysql:8.0.27
container_name: mysql-dev
volumes:
- /disk/docker_mysql_dev/conf:/etc/mysql/conf.d
- /disk/docker_mysql_dev/logs:/logs
- /disk/docker_mysql_dev/data:/var/lib/mysql
ports:
- "3361:3306"
environment:
- MYSQL_ROOT_PASSWORD=123456
restart: always
command:
--max_connections=1000
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--lower_case_table_names=1
--default_authentication_plugin=mysql_native_password`
2、第二个要记录的坑是,通过sequel pro连接mysql的问题
我在服务器通过docker运行了mysql之后,然后在我本地电脑连接mysql报错:
Authentication plugin ‘caching_sha2_password’ cannot be loaded: dlopen(/usr/local/mysql/lib/plugin/caching_sha2_password.so, 0x0002): tried: ‘/usr/local/mysql/lib/plugin/caching_sha2_password.so’ (no such file), ‘/System/Volumes/Preboot/Cryptexes/OS/usr/local/mysql/lib/plugin/caching_sha2_password.so’ (no such file), ‘/usr/local/mysql/lib/plugin/caching_sha2_password.so’ (no such file)
网上查了资料,说是执行下面命令就可以:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
FLUSH PRIVILEGES;
然而我执行了还是报这个错。到这里,如果熟悉mysql的user表的同学应该看出问题了吧,哈哈!是因为我是针对localhost的root执行的这个命令,但是我的是远程连接,所以我必须把命令改成下面这个:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
FLUSH PRIVILEGES;
执行完就可以了。