Docker - 部署mysql数据库
下载mysql 镜像
docker pull mysql
将全部的配置文件和关联的文件夹统一放到/opt/docker-mysql
中
$ mkdir -p /opt/docker-mysql/conf.d
增加并修改配置文件config-file.cnf
[mysqld] # 表名不区分大小写 lower_case_table_names=1 #server-id=1 datadir=/var/lib/mysql #socket=/var/lib/mysql/mysqlx.sock #symbolic-links=0 # sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
三、启动
增加数据文件夹
$ mkdir -p /opt/docker-mysql/var/lib/mysql
启动,设置默认密码 123456
docker run --name mysql --restart=always -p 3306:3306 -v /opt/docker-mysql/conf.d:/etc/mysql/conf.d -v /opt/docker-mysql/var/lib/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest
如连接时遇到以下问题。
问题1:
1. 进入mysql 容器
docker exec -it mysql /bin/bash
2.进入mysql
mysql -uroot -p123456
3.修改密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
OK,解決。
问题2:
远程访问mysql出现Access denied for user 'root'@'的解决方法
![](https://img2020.cnblogs.com/i-beta/880909/202003/880909-20200305175151937-607477790.png)
解释:服务器没有授权给你这个ip是不能连接的
你想root用户名使用root密码从任何主机连接到mysql服务器的话。
8.0之前的版本 运行命令:mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql>flush privileges;
如果你想允许用户root从ip为192.168.3.10的主机连接到mysql服务器,并使用root作为密码
8.0之前的版本 运行命令:mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.3.10' IDENTIFIED BY '123456' WITH GRANT OPTION;
上面的命令创建一个可以从任意机器以root登录的超级账号,口令是root。这样,就可以使用方便的图形工具(navicat for mysql)进行登录和操作,包括修改root的口令。
其中用户名和密码、IP换成自己的即可
注意:
8.0版本之前的提升权限语句:
grant all privileges on *.* to 'root'@'%' identified by `123` with grant option;
新版的语句:
use mysql
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
FLUSH PRIVILEGES;
输入exit 退出。
完成,在局域网的其他电脑上 可正常连接。
常用命令
进入容器
docker exec -it mysql bash
查看日志
docker logs -f mysql
备份数据
docker exec mysql sh -c 'exec mysqldump --all-databases -uroot -p"123456"' > /some/path/on/your/host/all-databases.sql
恢复数据
docker exec -i mysql sh -c 'exec mysql -uroot -p"123456"' < /some/path/on/your/host/all-databases.sql