使用MySQL-Docker鏡像啟動MySQL


1. Docker安裝參考https://www.cnblogs.com/hujiapeng/p/5817535.html

2. 在服務器本地創建MySQL配置文件,基本配置如下,如放在文件/root/mysql/conf/my.cnf中

[mysqld]
# 設置3306端口
port=3306
# mysql pid記錄文件
pid-file = /var/run/mysqld/mysqld.pid
# socket配置
socket = /var/run/mysqld/mysqld.sock
# 設置mysql數據庫的數據的存放目錄
datadir=/var/lib/mysql
# 允許最大連接數
max_connections
=1000
# 允許連接失敗的次數。這是為了防止有人從該主機試圖攻擊數據庫系統
max_connect_errors
=100
# 服務端使用的字符集默認為UTF8
character
-set-server=utf8mb4
# 創建新表時將使用的默認存儲引擎
default
-storage-engine=INNODB
# 默認使用“mysql_native_password”插件認證
default_authentication_plugin
=mysql_native_password
# 是否對sql語句大小寫敏感,1表示不敏感
lower_case_table_names
= 1
#MySQL連接閑置超過一定時間后(單位:秒)將會被強行關閉
#MySQL默認的wait_timeout 值為8個小時, interactive_timeout參數需要同時配置才能生效
interactive_timeout
= 1800
wait_timeout
= 1800
#Metadata Lock最大時長(秒), 一般用於控制 alter操作的最大時長sine mysql5.
6
#執行 DML操作時除了增加innodb事務鎖外還增加Metadata Lock,其他alter(DDL)session將阻塞
lock_wait_timeout
= 3600
#內部內存臨時表的最大值。
#比如大數據量的group by ,order by時可能用到臨時表,
#超過了這個值將寫入磁盤,系統IO壓力增大
tmp_table_size
= 64M
max_heap_table_size
= 64M
[mysql]
# 設置mysql客戶端默認字符集
default
-character-set=utf8mb4
[client]
# 設置mysql客戶端連接服務端時默認使用的端口
port
=3306
default
-character-set=utf8mb4

[mysqld_safe]
log_error=/var/log/mysqld.log
pid_file=/var/run/mysqld/mysqld.pid

3. docker命令啟動MySQL鏡像,如果docker服務沒啟動,可以使用service docker start命令啟動。注意使用--privileged=true配置,讓docker有權限操作物理機文件

docker run --name mysql -p 3306:3306 --privileged=true -v /root/mysql/conf:/etc/mysql/conf.d -v /root/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:8.0

4. 使用命令docker logs mysql查看啟動日志,發現有提醒:mysqld: [Warning] World-writable config file '/etc/mysql/conf.d/my.cnf' is ignored.這是因為本地的配置文件權限太大,對所有用戶都生效了,所以mysql為了安全,就忽略不使用了。需要對本地my.cnf文件權限降級:chmod 644 mysql/conf/my.cnf

5. 進入Mysql docker內部

docker exec -it mysql /bin/bash

6. 啟動Mysql客戶端,連接Mysql。show databases;命令可以列出數據庫

 mysql -uroot -proot

 7. 重啟MySQL服務方式就是重啟鏡像容器,docker restart mysql


免責聲明!

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



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