首页 > 技术文章 > docker搭建mysql 用户名密码忘记了怎么办

brithToSpring 2020-07-01 12:00 原文

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/

 

推荐阅读