2.1 Docker安裝MySQL8.0
1.拉取MySQL
docker pull mysql:latest
如:拉取MySQL8.0.33版本
docker pull mysql:8.0.33
2. 啟動鏡像
docker run -p 3307:3306 --name mysql8 -e MYSQL_ROOT_PASSWORD=Hgh75667% -d mysql:8.0.33
- -p 3307:3306 把mysql默認的3306端口映射到了3307
- –name mysql8 docker啟動的容器名稱是mysql8
- -e MYSQL_ROOT_PASSWORD=Hgh75667% 設置了密碼是Hgh75667%
檢查是否成功
docker ps
3. 配置掛載
創建掛載目錄
mkdir -p /docker/mysql8.0.33/
檢查保證創建成功
cd /docker/mysql8.0.33/
pwd
拷貝配置文件到創建的目錄下
docker cp mysql8:/etc/mysql /docker/mysql8.0.33/
- mysql8:/etc/mysql Docker容器中MySQL路徑
- /docker/mysql8.0.33/ 新建的文件路徑
4.刪除原有容器
docker stop mysql8
docker rm -f mysql8
5. 啟動mysql掛載配置文件,數據持久化到宿主主機
新增my.cnf 進入到上面掛載目錄下、因為已經做了cp復制。所以可以到copy目錄下新增
cd /docker/mysql8.0.33/mysql/conf.d
vim 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]
進入cd /docker/目錄,創建一個sh腳本、把docker啟動mysql的命令放到腳本里面。因為后續如果想找到當時啟動mysql時候所設置的一些參數和信息、可以查看這個腳本里面是怎么寫的。
cd /docker/
vim docker_insert_mysql8.0.33.sh
內容:
#!/bin/sh
docker run \
-p 3307:3306 \
--name mysql8 \
--privileged=true \
--restart unless-stopped \
-v /docker/mysql8.0.33/mysql:/etc/mysql \
-v /docker/mysql8.0.33/logs:/logs \
-v /docker/mysql8.0.33/data:/var/lib/mysql \
-v /etc/localtime:/etc/localtime \
-e MYSQL_ROOT_PASSWORD=Hgh75667% \
-d mysql:8.0.33
解釋
-p 端口映射 【這里有個特殊的地方是把3306映射給了3307、后續鏈接數據庫的時候用3307鏈接不用3306】
–name mysql8 名稱是mysql8
–privileged=true 掛載文件權限設置
–restart unless-stopped 設置 開機后自動重啟容器
-v /docker/mysql8.0.20/mysql:/etc/mysql \ 掛載配置文件【路徑是上面創建的掛載路徑】
-v /docker/mysql8.0.20/logs:/logs \ 掛載日志【路徑是上面創建的掛載路徑】
-v /docker/mysql8.0.20/data:/var/lib/mysql \ 掛載數據文件 持久化到主機【路徑是上面創建的掛載路徑】
-v /etc/localtime:/etc/localtime 容器時間與宿主機同步
-e MYSQL_ROOT_PASSWORD=Hgh75667 設置密碼
-d mysql:8.0.33 后臺啟動,mysql
執行docker_insert_mysql8.0.33.sh文件
sh docker_insert_mysql8.0.33.sh
檢查是否啟動成功
docker ps
6. 配置鏈接信息(遠程訪問配置)
這里已經成功啟動了、但是連接還需要在配置之后才可以鏈接。
進入mysql8 容器
docker exec -it mysql8 bash
在容器內登錄mysql
mysql -u root -p
-
-u,登陸的用戶,MySQL數據庫的管理員用戶同Linux一樣,是root
-
-p,表示使用密碼登陸
執行完畢后輸入剛剛得到的初始密碼,即可進入MySQL數據庫,
如果出現異常:(初始密碼不成功,密碼默認為空,直接Enter)保證進入到mysql命令行。
設置權限(為root分配權限,以便可以遠程連接)
grant all PRIVILEGES on *.* to root@'%' WITH GRANT OPTION;
use mysql;
update user set host='%' where user='root';
select host,user from user where user = 'root';
show databases;
需要保證user表中更新了user為root,Host為%的用戶
由于Mysql5.6以上的版本修改了Password算法,這里可以更新密碼算法,便于使用Navicat連接。
授予權限
grant all PRIVILEGES on *.* to root@'%' WITH GRANT OPTION;
允許root遠程登錄,并設置遠程登錄密碼
默認情況下,root用戶是不運行遠程登錄的,只允許在MySQL所在的Linux服務器登陸MySQL系統
請注意,允許root遠程登錄會帶來安全風險
ALTER user 'root'@'%' IDENTIFIED BY 'Hgh75667%' PASSWORD EXPIRE NEVER;
ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'Hgh75667%';
FLUSH PRIVILEGES;
參考:https://blog.csdn.net/a1150499208/article/details/131437199?
7.Navicat鏈接數據庫
服務器端口開放
云服務器ECS -> 安全組 ->管理規則 -> 添加安全組
連接成功
云服務器ECS -> 安全組 ->管理規則 -> 添加安全組
[外鏈圖片轉存中…(img-VGGsV4Cx-1717081761454)]
連接成功