6.2.安装 MySQL
6.2.1.拉取镜像
6.2.1.1.搜索查看可用的mysql镜像
docker search mysql
6.2.1.2.拉取最新版本的mysql镜像
docker pull mysql:latest
6.2.1.3.查看镜像是否已经有mysql
docker images|grep mysql
6.2.2.启动容器
6.2.2.1.启动容器实例
启动同时设置名字以及root密码,端口号等
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/mysql-files:/var/lib/mysql-files \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
mysql:latest
-d : 以后台方式运行并且返回ID,启动守护进程式容器
-p 3306:3306 : 容器与主机映射端口为, 3306(主机端口,即外部连接mysql使用的端口号): 3306(容器端口)
–name mysql : 容器运行后的名称
-v /mydata/mysql/log:/var/log/mysql:将容器/var/log/mysql目录下的数据,备份到主机的 /mydata/mysql/log目录下
-v /mydata/mysql/data:/var/lib/mysql:将容器/var/lib/mysql目录下的数据,备份到主机的 /mydata/mysql/data目录下 -v /mydata/mysql/mysql-files:/var/lib/mysql-files:将容器/var/lib/mysql-files目录下的数据,备份到主机的 /mydata/mysql/mysql-files目录下
-v /mydata/mysql/conf:/etc/mysql:将容器/etc/mysql目录下的数据,备份到主机的 /mydata/mysql/conf目录下
-e MYSQL_ROOT_PASSWORD=root 设置当前mysql实例的密码为root
mysql:latest 需要运行的容器名称以及版本号(根据 images 对应版本)
通过此处-v 命令备份后,就算当前mysql容器实例被删除,那么再次重启mysql容器后,数据将会自动从主机加载到容器当中
6.2.2.2.测试容器是否启动
docker ps | grep mysql
6.2.3.添加配置文件
切换到上述命令配置的主机/mysqldata/mysql/conf目录下
cd /mydata/mysql/conf
创建 my.cnf文件
touch my.cnf
使用vi命令对 my.cnf文件添加如下内容,在docker中安装的mysql默认字符集是latin1,需要改成utf8
[mysqld]
collation_server=UTF8MB4_general_ci
character-set-server=UTF8MB4
default_authentication_plugin=mysql_native_password
secure_file_priv=/var/lib/mysql
expire_logs_days=7
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections=1000
[client]
default-character-set=UTF8MB4
[mysql]
default-character-set=UTF8MB4
按esc, 输入 :wq,保存退出
重启mysql容器实例,让刚才的配置文件生效
docker restart mysql
6.2.4.查看运行的容器
6.2.4.1.进入交互模式
docker exec -it mysql /bin/bash
6.2.4.2.配置mysql
在交互模式下输入, 启动 mysql
mysql -h localhost -u root
进入mysql 模式 为root 设置密码
alter user 'root'@'localhost' identified with mysql_native_password by 'root';
退出 , 密码登录 , 输入 新设置的密码 root
exit
mysql -u root -p
再设置可以远程可以访问的账号密码
create user 'yuancheng'@'%' identified with mysql_native_password by 'yuancheng';
grant all privileges on *.* to 'yuancheng'@'%';
退出
6.2.5.外部测试
使用外部工具连接