1、拉取mysql指定版本
docker pull mysql:5.7
2、拉取结束后,查看本地是否存在
docker images
3、切换到上述命令配置的主机/mysqldata/mysql/conf目录下
cd /mysqldata/mysql/conf
创建 conf.d 文件夹 和 mysql.conf.d 文件夹
在 mysql.conf.d文件夹中创建 my.cnf文件
touch my.cnf
使用vim命令对 my.cnf文件添加如下内容,在docker中安装的mysql默认字符集是latin1,需要改成utf8
[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8
4、创建并运行容器mysql
docker run -d -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=123123 mysql:5.7
上述命令的含义:
docker run:在docker中启动一个容器实例
-d:该容器在后台运行
-p 3306:3306:容器与主机映射端口为,主机3306,容器3306
--name mysql:容器运行后的名称
-v /mysqldata/mysql/log:/var/log/mysql:将容器/var/log/mysql目录下的数据,备份到主机的 /mysqldata/mysql/log目录下
-v /mysqldata/mysql/data:/var/lib/mysql:将容器/var/lib/mysql目录下的数据,备份到主机的 /mysqldata/mysql/data目录下
-v /mysqldata/mysql/conf:/etc/mysql:将容器/etc/mysql目录下的数据,备份到主机的 mysqldata/mysql/conf目录下
-e MYSQL_ROOT_PASSWORD=root:设置当前mysql实例的密码为root
mysql:5.7:需要运行的容器名称以及版本号
通过此处-v 命令备份后,就算当前mysql容器实例被删除,那么再次重启mysql容器后,数据将会自动重主机加载到容器当中
5、重启mysql容器实例
docker restart mysql
6、授权远程访问
不进行授权直接登陆的话会报错
(1) 进入容器内部
docker exec -it mysql /bin/bash
(2)登陆mysql
mysql -u root -p
(3) 选择数据库
show databases;
use mysql;
不要忘记最后的分号。
(4) 查看用户连接情况
select host, user, plugin, authentication_string, password_expired from user;
(5)修改密码认证方式
ALTER USER root@'%' IDENTIFIED WITH mysql_native_password BY '123456';
ALTER USER root@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
-- 刷新权限
FLUSH PRIVILEGES;
(6)退出容器
exit