大忙人系列_一分鐘Docker安裝MySQL

1、拉取MySQL

docker pull mysql:8.0  (如果不加版本號那麼拉取的就是latest最新的)

 

 查看拉取是否成功:docker images

2、創建data、log、config用來掛載外部文件

 

mkdir -p /home/mysql/{conf,logs,data/mysql}
或者
mkdir -p /apps/mysql/etc \
mkdir -p /apps/mysql/log \
mkdir -p /apps/mysql/config \
mkdir -p /apps/mysql/data \;

 

3、運行MySQL

如果下面mysql中帶有版本號,那麼啓動的就是指定的版本號mysql,如果沒有帶,那麼啓動的就是最新的版本號
# 運行方法一:
docker run -e MYSQL_ROOT_PASSWORD=123456 -d -p 3306:3306 mysql(mysql:8.0)
# (https://itbilu.com/linux/docker/EyP7QP86M.html)
#運行方法二(採用外部文件配置運行):
docker run \
    -d -p 3306:3306 \
    --name mysql8 \
    --privileged=true \
    -e MYSQL_ROOT_PASSWORD=123456 \
    -v /apps/mysql/data:/var/lib/mysql:rw \
    -v /apps/mysql/log:/var/log/mysql:rw \
    -v /apps/mysql/config/my.cnf:/etc/mysql/my.cnf:rw \
    -v /etc/localtime:/etc/localtime:ro \
    --restart=always \
     mysql:8.0

注意:當我們使用上面方法二命令啓動的時候,我們需要在config文件夾下面創建一個我們自己的配置文件“my.cnf”否者要報錯,而且一定要加:“--restart=always \”否者可能出現啓動不報錯,但是使用“docker ps”無法查看到mysql啓動鏡像,使用“docker ps -a”可以查看到mysql容器已經啓動.-------此時問題還是沒有解決,因爲此時如果我們讓它重啓的話,我們通過"docker ps"可以看到如下問題

my.conf文件夾內容可以爲(也可以爲空):

 

[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

 查詢是否運行成功:docker ps 

 

4、進入MySQL

docker exec -it 容器ID /bin/sh    ---->exec進入Docker終端(CTRL+D退出)
輸入MySQL命令:mysql -uroot -p
輸入MySQL密碼:123456

 

 然後使用navicat連接時報:1251-Client does not support authentication protocol requested by server;consider upgrading MySQL client;

此時是由於安裝MySQL時的默認加密問題...
操作如下:進入到mysql控制檯(分開執行)

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的數據庫密碼';
FLUSH PRIVILEGES;

 

5、備份數據庫

 Docker的MySQL備份:

表備份:docker exec -it CONTAINERID mysqldump -uroot -p db1 table1 table2 > /test_db.sql
單庫:docker exec -it CONTAINERID mysqldump -uroot -p test_db > /test_db.sql
多庫:docker exec -it CONTAINERID mysqldump -uroot -p --databases db1 db2 > /test_db.sql
全部:docker exec -it CONTAINERID mysqldump -uroot -p --all-databases > /test_db.sql

 

 MySQL備份:

表備份:mysqldump -uroot -p db1 table1 table2 > /test_db.sql
單庫:mysqldump -uroot -p test_db > /test_db.sql
多庫:mysqldump -uroot -p --databases dbname1 dbname2 > /test_db.sql
全部:mysqldump -uroot -p --all-databases > /test_db.sql

 

6、忘記密碼

# 進入容器:docker exec -it mysql /bin/bash
    cd /etc/mysql
    vi my.cnf
# 在最後添加:
    skip-grant-tables #在啓mysql時不啓動grant-tables
    
# 重啓容器
    docker restart mysql

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章