Docker安裝MySQL
1 、到docker鏡像倉庫查看mysql版本
sudo docker pull mysql:5.7
2、查看下載的mysql
sudo docker images
3、創建實例並啓動
sudo docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
參數說明:
-p 3306:3306:將容器的3306端口映射到主機的3306端口
-v /mydata/mysql/conf:/etc/mysql:將配置文件掛載到主機
-v /mysdata/mysql/log:/var/log/mysql:將日誌文件夾掛載到主機
-v /mydata/mysql/data:/var/lib/mysql:將配置文件夾掛載到主機
-e MYSQL_ROOT_PASSWORD=root:初始化root用戶的密碼
4 、配置文件內容
找到我們本地的mydata/mysql/conf
cd /mydata/mysql/conf
vi my.cnf
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
注意:解決MySQL連接慢的問題
在配置文件中加入如下,並重啓mysql
[mysqld]
skip-name-resolve
解釋:
skip-name-resolve:跳過域名解析
5 、重啓mysql
docker restart mysql
6、docker啓動後,mysql也跟着啓動
docker update mysql --restart=always
7、使用Navicat數據庫工具連接mysql
8、遇到的問題
- 在執行更新操作的時候,會報
[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column ‘information_schema.PROFILING.SEQ’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
以上錯誤,我們設置my.cnf文件,添加
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
需要注意的一點是一定要添加在[mysqld]配置內,這樣添加完後重啓mysql纔會生效
-
我們用工具連接數據庫的時候,可能會出現連不上數據庫的情況
首先我們進入到Docker,連上數據庫
docker exec -it mysql /bin/bash mysql -uroot -p
輸入數據庫密碼,前面我們設置的啓動密碼是root
## 從任何主機上使用root用戶,密碼:youpassword(你的root密碼)連接到mysql服務器
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION;
## 刷新權限
FLUSH PRIVILEGES;
退出後,重啓
docker restart mysql