docker 安裝mysql 並將文件掛載到本地


  • 首先准備好掛載的文件路徑
  • 執行mysql創建以及掛載的命令(這里還可以使用-e環境變量來創建新用戶MYSQL_USER,MYSQL_PASSWORD)
    docker run -d -p 3306:3306 --restart always -e MYSQL_ROOT-PASSWORD="root12345" --name db-mysql -v /docker/mysql/config/my.cnf:/etc/my.cnf -v /docker/mysql/data:/var/lib/mysql mysql/mysql-server  

     

  • 執行上面的語句可能會發現以下問題(1注意檢查掛載的路徑和文件是否創建2.注意檢查掛載的文件是否為文件格式而不是目錄)
  • 過程碰到的問題報錯如下:大致意思是您掛載的文件是個cnf目錄文件而您掛載的目標文件是個cnf文件。
    docker: Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused "process_linux.go:402: container init caused \"rootfs_linux.go:58: mounting \\\"/docker/mysql/config/my.cnf\\\" to rootfs \\\"/var/lib/docker/overlay2/a745e213e304a1aa8d7b237b6193b95f8b376472196bf3a0646922491aef141b/merged\\\" at \\\"/var/lib/docker/overlay2/a745e213e304a1aa8d7b237b6193b95f8b376472196bf3a0646922491aef141b/merged/etc/my.cnf\\\" caused \\\"not a directory\\\"\"": unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type.

     

  • 解決方案
    rm -rf my.cnf/
    vim my.cnf
    #insert
    [mysqld]
    user=mysql 然后運行步驟二語句
  •  修改字符集

    修改my.cnf 文件的內容達到修改字符集的目的
    vim my.cnf
    #insert
    character-set-server=utf8
    [client]
    default-character-set=utf8
    [mysql]
    default-character-set=utf8
    #退出restart mysql
    docker restart db-mysql
    #查看修改的字符集
    #首先進入bash,這里需要注意如果進入bash的時候root密碼沒有生效則需要去docker logs db-mysql 中查看創建的默認密碼
    然后憑借默認密碼進入到mysql環境。進入環境第一件事就是修改root用戶的密碼:ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
    (docker exec -it db-mysql mysql -uroot -proot12345)
    docker exec -it db-mysql bash
    mysql -uroot -p
    #輸入用戶名密碼
    use mysql
    #查看用戶權限
    select user,host from user      
    #查看字符集                    
    show variables like '%char%'
  • 創建新用戶
    mysql> CREATE USER 'cyao'@'localhost' IDENTIFIED BY 'pwd123456';
    mysql> GRANT ALL PRIVILEGES ON *.* TO 'cyao'@'localhost' WITH GRANT OPTION;
    mysql> CREATE USER 'test'@'%' IDENTIFIED BY 'pwd123456';
    mysql> GRANT ALL PRIVILEGES ON *.* TO 'test'@'%'
        ->     WITH GRANT OPTION;
  •  關於掛載有一下幾個地方需要注意

        1.掛載之前my.cnf 必須要配置一個默認用戶[mysqld] user=mysql
        2.掛載之前本地/docker/mysql/data這個路徑下不能有其他文件或者文件夾

     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM