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 设置表名参数名等忽略大小写