1、查询mysql版本
docker search mysql
2、拉取指定版本的镜像
docker pull NAME
3、启动镜像, 第一次启动最少需要指定MYSQL_ROOT_PASSWORD
docker run -d -e MYSQL_ROOT_PASSWORD=password -p 3306:3306 --privileged=true --name mysql mysql_name
--privileged=true是严格模式启动容器, 需要修改容器文件就要启用
4、修改配置文件
docker run -d -e MYSQL_ROOT_PASSWORD='password' -v $HOME/my:/etc/mysql/conf.d/ --name mysql mysql57:latest $HOME/my这个文件夹是存放my.cnf配置文件
5、进入容器
docker exec -it mysql bash
6、使用mysql
docker run -it -d -e MYSQL_ROOT_PASSWORD=123456 -p 9003:3306 --name fw_mysql_v1.0_20200102 mysql:latest /bin/bash
这个5.7测试没问题:docker run -p 3306:3306 --name zsdmysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
mysql -uroot -p
输入密码即可
7、客户端连接服务器
报错:Client does not support authentication protocol requested by server
解决:
进入mysql:mysql -uroot -p
use mysql;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
FLUSH PRIVILEGES;
8、Mysql乱码解决方法
1.进入到docker里面的mysql服务
docker exec -it hzmysql(数据库镜像) bash
2.更新服务器的数据源
apt-get update
3.若服务器没有装vim,先装vim编辑器
apt-get install vim
4.进入到此目录下,修改文件my.cnf,若没有权限修改,则先su命令获取管理员权限。
cd /etc/mysql
vim my.cnf
5.加入以下代码
[client]
default-character-set=utf8
[mysqld]
character-set-server = utf8
保存后重启mysql服务:service mysql restart
再重启docker中的mysql数据库镜像
9、mysql报socket错误
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
10、数据库命令
(1)创建数据库
CREATE DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
11、权限报错