1 拉取mysql镜像,采用网易加速地址
docker pull hub.c.163.com/library/mysql:5.7
2 重命名镜像名
docker tag hub.c.163.com/library/mysql:5.7 mysql:5.7
3 创建容器且安装镜像.启动。
docker run --name mysql-main -p3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
-name:容器名称mysql-main -p:将端口号映射到主机 最后设置密码123456
4 通过命令进入mysql-main容器
docker exec -it mysql-main bash
5 然后进入MySQL。并设置远程的授权等信息。
mysql -uroot -p
grant all privileges on *.* to root@"%" identified by "123456" with grant option; ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; flush privileges;
6 取消Mysql查询大小写的问题。
进入docker的MySQL容器,编辑/etc/mysql/mysql.conf.d/mysqld.cnf文件,在[mysqld]下添加如下:
[mysqld] lower_case_table_names=1
保存,退出容器;执行sudo docker restart MySQL ,重启MySQL即可查看。
7 解决Mysql5.7的查询兼容问题。此设置重启失效。
如:Expression
8 解决Mysql5.7的密码修改不兼容问题。
Mysql5.7更改密码,以前的方式会报错。代码如下:
update mysql.user set password=password('root') where user='root' 提示ERROR 1054 (42S22): Unknown column 'password' in 'field list' 最新的更改密码代码是: update mysql.user set authentication_string=password('root') where user='root'
备注:
启动docker中 MySQL的时候可以加参数。含义是:
--restart=always 跟随docker启动 --privileged=true 容器root用户享有主机root用户权限 -v 映射主机路径到容器 -e MYSQL_ROOT_PASSWORD=root 设置root用户密码 -d 后台启动 --lower_case_table_names=1 设置表名参数名等忽略大小写