1. 程式人生 > 資料庫 >Docker 安裝 MySQL(8和5.7)

Docker 安裝 MySQL(8和5.7)

本篇將介紹如何使用 Docker 部署 MySQL 資料庫及遠端訪問配置

安裝 MySQL

拉取映象

使用下面的命令拉取 MySQL 資料庫的映象:

$ sudo docker pull mysql # 拉取最新版本的映象,當前為 MySQL 8 版本,tag 為 latest

$ sudo docker pull mysql:5.7 # 指定拉取 MySQL 5.7 版本

也可以使用搜索命令,查詢其他的 MySQL 相關映象,其中有標識 Stars 數,即受歡迎程度。

$ sudo docker search mysql

執行 MySQL

$ sudo docker run -p 3306:3306 \
  --name mysql \
  -v $PWD/conf:/etc/mysql/conf.d \
  -v $PWD/logs:/logs \
  -v $PWD/data:/var/lib/mysql \
  -e MYSQL_ROOT_PASSWORD=your-password \
  -d mysql

命令說明:

  • -p 3306:3306 :將容器的 3306 埠對映到主機的 3306 埠。
  • -v $PWD/conf:/etc/mysql/conf.d :將主機當前目錄下的 conf/my.cnf 掛載到容器的 /etc/mysql/my.cnf。
  • -v $PWD/logs:/logs :將主機當前目錄下的 logs 目錄掛載到容器的 /logs。
  • -v $PWD/data:/var/lib/mysql :將主機當前目錄下的data目錄掛載到容器的 /var/lib/mysql 。
  • -e MYSQL_ROOT_PASSWORD=your-password :初始化 root 使用者的密碼,建議使用複雜度高的密碼。
  • -d mysql : 要部署的映象名,如果是5.7版本的話,這裡則為mysql:5.7

配置遠端訪問

遠端訪問 MySQL 屬於基本配置,但是在配置的時候要注意安全性問題,否則將存在安全性隱患,尤其是企業用伺服器更要注重安全性。

並且需要注意伺服器防火牆要開啟 3306 埠,伺服器提供商的安全組中也需要開啟,否則會無法訪問哦。

要配置遠端訪問,先要開啟 MySQL 的控制終端,使用下面的命令開啟:

$ sudo docker exec -it mysql bash # 進入 MySQL 容器

$ mysql -uroot -p # 登入 MySQL,執行後輸入密碼進入 MySQL

$ use mysql; # 選擇使用 mysql 資料庫

MySQL 8 配置

CREATE USER 'username'@'%' IDENTIFIED BY 'password';
# 建立一個賬號,用來進行遠端訪問;
# {usernama} 是遠端訪問登入的使用者名稱,不建議用 root;
# {password} 是遠端訪問的登入密碼;
# '%'代表的是所有IP,如果可以儘量設定指定 IP 或 IP 段

GRANT ALL ON *.* TO 'username'@'%';
# 賦予所有許可權給之前建立的賬號

ALTER USER 'username'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
# 確認使用這裡的密碼登入此賬號

FLUSH PRIVILEGES;
# 重新整理許可權

完整命令如下所示:

CREATE USER 'james'@'%' IDENTIFIED BY '123456asd';
# 建立一個賬號-james,用來進行遠端訪問;

GRANT ALL ON *.* TO 'james'@'%';
# 賦予所有許可權給之前建立的賬號:james

ALTER USER 'james'@'%' IDENTIFIED WITH mysql_native_password BY '123456asd';
# 確認使用密碼{123456asd}登入此賬號{james}
# 密碼儘量複雜,安全性更高。

FLUSH PRIVILEGES;
# 重新整理許可權

配置完畢後,使用 Navicat 工具或其他工具進行連線測試即可。

MySQL 5.7 配置

GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
# {usernama} 是遠端訪問登入的使用者名稱,不建議用 root;
# {password} 是遠端訪問的登入密碼;
# '%'代表的是所有IP,如果可以儘量設定指定 IP 或 IP 段

FLUSH PRIVILEGES;
# 重新整理許可權

配置完畢後,使用 Navicat 工具或其他工具進行連線測試即可。

注:如果無法訪問請注意防火牆 3306 埠是否開啟,伺服器提供商的安全組中的埠是否開啟。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。