使用Docker安裝mysql,掛載外部配置和數據


1、掛載外部配置和數據安裝
mkdir /opt
mkdir /opt/mysql
mkdir /opt/mysql/conf.d
mkdir /opt/mysql/data/

創建my.cnf配置文件
touch /opt/mysql/my.cnf

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

2、創建容器,並后台啟動
docker run --restart=always --privileged=true -d -v /opt/mysql/data/:/var/lib/mysql -v /opt/mysql/conf.d:/etc/mysql/conf.d -v /opt/mysql/my.cnf:/etc/mysql/my.cnf -p 33060:3306 --name my-mysql -e MYSQL_ROOT_PASSWORD=123456 mysql

參數說明:
--restart=always: 當Docker 重啟時,容器會自動啟動。
--privileged=true:容器內的root擁有真正root權限,否則容器內root只是外部普通用戶權限
-v /opt/mysql/conf.d/my.cnf:/etc/my.cnf:映射配置文件
-v /opt/mysql/data/:/var/lib/mysql:映射數據目錄

注意:啟動mysql報如下錯誤,那是因為MYSQL新特性secure_file_priv對讀寫文件的影響。

ERROR: mysqld failed while attempting to check config
command was: "mysqld --verbose --help"

mysqld: Error on realpath() on '/var/lib/mysql-files' (Error 2 - No such file or directory)
2019-09-14T09:52:51.015937Z 0 [ERROR] [MY-010095] [Server] Failed to access directory for --secure-file-priv. Please make sure that directory exists and is accessible by MySQL Server. Supplied value : /var/lib/mysql-files
2019-09-14T09:52:51.018328Z 0 [ERROR] [MY-010119] [Server] Aborting


解決問題:
windows下:修改my.ini 在[mysqld]內加入secure_file_priv=/var/lib/mysql

linux下:修改my.cnf 在[mysqld]內加入secure_file_priv=/var/lib/mysql


免責聲明!

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



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