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/