Docker啟動MySQL 8.0 報錯: docker Supplied value : /var/lib/mysql-files


這個問題是在啟動容器嘗試對容器掛載數據卷的時候出現的, 不掛載數據卷不會有這個問題。

我的數據卷掛載參數如下, 其中報錯就是因為缺少第二行, 對my.cnf文件也掛載。

-v /usr/local/docker/mysql/conf:/etc/mysql \
-v /usr/local/docker/mysql/my.cnf:/etc/mysql/my.cnf \
-v /usr/local/docker/mysql/logs:/var/log/mysql \
-v /usr/local/docker/mysql/data:/var/lib/mysql \

 

啟動容器之前, 先去宿主機創建這個my.cnf, 

輸入命令vi /usr/local/docker/mysql/my.cnf, 加入內容:

[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
secure_file_priv=/var/lib/mysql
expire_logs_days=7
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections=1000

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

保存退出之后, 就可以用如下命令啟動了:

docker run -d --privileged=true \
-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 \
-v /usr/local/docker/mysql/my.cnf:/etc/mysql/my.cnf \
-p 33060:3306 --name=mysql -e MYSQL_ROOT_PASSWORD=123456 \
<鏡像id>

 

需要說明的是, 在mysql 5.7.9以后廢棄了password字段和password()函數;

用docker exec -it mysql bash命令進入容器后,輸入mysql即可連上mysql server,

輸入use mysql切換數據庫, 然后順手一個select * from user;可以看到用戶密碼字段變成了authentication_string, 

要修改root密碼, 用sql語句ALTER user 'root' IDENTIFIED BY '123456'; 

然后用navicat就可以連上了。

 


免責聲明!

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



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