1.先确定mysql使用的版本及mysql中的非系统库及系统库是否有没有挂载
docker run -p 3306:3306 --name mysql -v /usr/local/docker/mysql/conf:/etc/mysql -v /usr/local/docker/mysql/logs:/var/log/mysql -v /usr/local/docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
即:上述命令中的 -v 命令 及之后的参数,没有挂载的拷贝到宿主机中指定目录/usr/local/docker/mysql
2.在一个新的linux环境中,重新构建mysql服务,使用上述命令.
#使用新的用户名密码登录
mysql -uroot -p123456
3.执行show databases后,选择mysql系统库
4.添加新的用户
#允许本地 IP访问localhost的Mysql数据库
create user ‘editest‘@‘localhost‘ identified by ‘editest123456‘;
#允许外网IP访问数据库editest,本命令包含上面的命令,是所有的IP都可以访问该数据库
create user ‘editest‘@‘%‘ identified by ‘editest123456‘;
#用户创建完成后,刷新授权
flush privileges;
5.为新增的用户editest赋予editestdb库的权限
#赋予editestdb库所有权限
#本地
grant all privileges on `editestdb`.* to ‘editest‘@‘localhost‘ identified by ‘editest123456‘ with grant option;
#远程
grant all privileges on `editestdb`.* to ‘editest‘@‘%‘ identified by ‘editest123456‘ with grant option;
#赋予editestdb库部分权限
grant select on editestdb.* to ‘editest‘@‘localhost‘; /*给予查询权限*/
grant insert on editestdb.* to ‘editest‘@‘localhost‘; /*添加插入权限*/
grant delete on editestdb.* to ‘editest‘@‘localhost‘; /*添加删除权限*/
grant update on editestdb.* to ‘editest‘@‘localhost‘; /*添加权限*/
#刷新授权
flush privileges;
6.找到新创建mysql服务/usr/local/docker/mysql/data(下图挂载目录不同:请忽略)挂载目录下的3个文件user.frm、user.MYD、user.MYI
7.将找到的这三个文件,拷贝到原来mysql服务的指定挂载目录下(如:/usr/local/docker/mysql/data)根据自己的挂载目录而定, 然后重启mysql服务即可
参考: https://www.cnblogs.com/sablier/p/11605606.html
https://blog.csdn.net/xufengzhu/article/details/81112783
https://www.cnblogs.com/xietianhua/p/11345579.html
https://www.cnblogs.com/apexchu/p/11718445.html
https://blog.csdn.net/u013176681/article/details/72896727/