--- title: Mysql5.7和8.0在Docker上的使用 date: 2023-05-06 15:36:48.48 updated: 2023-06-15 11:01:58.044 url: /archives/mysql57-8-for-docker categories: - Docker - 数据库 tags: - Docker - DB --- # Mysql5.7和8.0在Docker上的使用 8.0版本 > 可以跟上正确的版本号 ```shell docker run -p 3306:3306 --name mysql8-test \ -v /usr/local/docker/mysql/mysql-files:/var/lib/mysql-files \ -v /usr/local/docker/mysql/conf:/etc/mysql/conf.d \ -v /usr/local/docker/mysql/logs:/var/log/mysql \ -v /usr/local/docker/mysql/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=root \ -d mysql:latest ``` 5.7版本 ```shell docker run -p 3306:3306 --name mysql5.7-test \ -v /mydata/mysql/log:/var/log/mysql \ -v /mydata/mysql/data:/var/lib/mysql \ -v /mydata/mysql/conf:/etc/mysql \ -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.42 ``` 区别在于配置文件的路径不同 8版本是`/etc/mysql/conf.d` 5.7版本是`/etc/mysql` ## 查看用户信息,修改密码 ```sql select host,user,plugin,authentication_string from mysql.user; ``` ![](https://images.qweraq.com/images/202305061530712.webp) 修改root密码 ```sql ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; ``` 修改root密码后再次查询用户信息,这个时候就可以远程连接成功了 ![](https://images.qweraq.com/images/202305061527513.webp) ## 报错日志 这个是在mysql8的镜像上启动容器,在run命令的时候挂载配置文件使用了/etc/mysql,报了以下错误 ```sh [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.33-1.el8 started. [ERROR] [Entrypoint]: mysqld failed while attempting to check config command was: mysqld --verbose --help --log-bin-index=/tmp/tmp.ixUqkEJ6Yi mysqld: Can't read dir of '/etc/mysql/conf.d/' (OS errno 2 - No such file or directory) mysqld: [ERROR] Stopped processing the 'includedir' directive in file /etc/my.cnf at line 36. mysqld: [ERROR] Fatal error in defaults handling. Program aborted! ``` 删除错误容器,重新启一个容器,把挂载配置文件目录的地方改一下就可以了