下載鏡像
sudo docker pull mysql:5.7
查看下載的鏡像
sudo docker images
創建mysql實例並啓動
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端口映射到主機
--name mysql 給容器命名爲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 將mysql的root密碼定爲root
-d mysql:5.7 以mysql:5.7鏡像啓動容器
查看docker容器
sudo docker ps
mysql已啓動成功
配置mysql
打開my.cnf文件
vi /mydata/mysql/conf/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
sudo docker restart mysql
進入mysql 容器
sudo docker exec -it mysql /bin/bash
可以看到,一個mysql容器就是一個完整的linux環境
查看容器中的mysql配置文件
cd /etc/mysql/
cat my.cnf
看到這個文件的內容就是剛剛我們配置的內容,是因爲在創建mysql實例並啓動時,對這三個目錄進行了映射,在這三個目錄下的文件的修改都將同步到mysql容器的對應文件中,就不需要進入mysql容器中再去修改配置,簡化了操作
連接數據庫
驗證mysql啓動是否正常
修改mysql密碼
1.進入mysql容器
docker exec -it mysql /bin/bash
2.登錄mysql
mysql -u root -p
輸入密碼:root
3.切換數據庫
use mysql
4.查詢root用戶
select * from user where user = root;
5.修改密碼
update user set authentication_string = password('新的密碼'), password_expired = 'N', password_last_changed = now() where user = 'root';
6.這條命令暫不清楚
update user set plugin="mysql_native_password";
7.刷新權限
flush privileges;
8.退出
quit;
9.重新登錄
mysql -u root -p
輸入新的密碼,登錄成功