先上报错命令:
docker run -d -p 3310:3306 -v H:\docker\mysql\conf:/etc/mysql -v H:\docker\mysql\logs:/var/log/mysql -v H:\docker\mysql\data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql8.0 mysql:8.0
指定了配置文件、日志、数据库的挂载,看起来没啥毛病,但是就是执行该命令后docker ps 看不到mysql。
百思不得其解,然后docker logs mysql8.0,看到如下报错:
C:\Users\rookieZn> docker logs mysql8.0
2022-08-18 08:30:14+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.27-1debian10 started.
2022-08-18 08:30:14+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2022-08-18 08:30:14+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.27-1debian10 started.
mysqld: Error on realpath() on '/var/lib/mysql-files' (Error 2 - No such file or directory)
2022-08-18T08:30:14.932180Z 0 [ERROR] [MY-010095] [Server] Failed to access directory for --secure-file-priv. Please make sure that directory exists and is accessible by MySQL Server. Supplied value : /var/lib/mysql-files
2022-08-18T08:30:14.932193Z 0 [ERROR] [MY-010119] [Server] Aborting
居然还要挂载/var/lib/mysql-files文件夹,然后rm了一下刚才的容器,重新编辑了一下命令:
docker run -d -p 3310:3306 -v H:\docker\mysql\conf:/etc/mysql -v H:\docker\mysql\logs:/var/log/mysql -v H:\docker\mysql\data:/var/lib/mysql -v H:\docker\mysql\mysql-files:/var/lib/mysql-files -e MYSQL_ROOT_PASSWORD=123456 --name mysql8.0 mysql:8.0
docker ps 看到启动成功,外部的navicat也能连接上了。