Docker安裝配置MySQL的實(shí)現(xiàn)步驟
前言
MySQL 是世界上最受歡迎的開源數(shù)據(jù)庫,So~本文將演示如何在Docker上安裝并且配置MySQL。
環(huán)境
- CentOS 7
- Docker 20.10.10
安裝
拉取鏡像
docker pull mysql
如果要指定版本,在mysql后面加上:
+版本號
,例如:
docker pull mysql:8.0.16
這里直接拉取最新版MySQL
查看鏡像
docker images
創(chuàng)建并啟動MySQL容器
創(chuàng)建數(shù)據(jù)目錄和配置文件
提前在宿主機(jī)創(chuàng)建好放置mysql的配置文件的目錄和數(shù)據(jù)目錄,并且進(jìn)行授予權(quán)限,避免掛載外部配置和數(shù)據(jù)時(shí)啟動失敗:
創(chuàng)建放置mysql的配置文件的目錄和數(shù)據(jù)目錄
mkdir -p /mydata/mysql/
設(shè)置文件夾權(quán)限
chmod -R 755 /mydata/mysql
第一個(gè)數(shù)字表示文件所有者的權(quán)限 第二個(gè)數(shù)字表示與文件所有者同屬一個(gè)用戶組的其他用戶的權(quán)限 第三個(gè)數(shù)字表示其它用戶組的權(quán)限。
權(quán)限分為三種:讀(r=4),寫(w=2),執(zhí)行(x=1) 。
綜合起來還有可讀可執(zhí)行(rx=5=4+1)、可讀可寫(rw=6=4+2)、可讀可寫可執(zhí)行(rwx=7=4+2+1)。 所以,chmod
755 設(shè)置用戶的權(quán)限為:
1.文件所有者可讀可寫可執(zhí)行 --7
2.與文件所有者同屬一個(gè)用戶組的其他用戶可讀可執(zhí)行 --5
3.其它用戶組可讀可執(zhí)行
創(chuàng)建my.cnf配置文件
mkdir -p /mydata/mysql/conf touch /mydata/mysql/conf/my.cnf
編輯my.cnf配置文件
vi /mydata/mysql/conf/my.cnf
添加以下配置內(nèi)容
[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 secure_file_priv=/var/lib/mysql
提醒
無論你是否使用我的配置,如果你的安裝的是新版MySQL,務(wù)必要復(fù)制這一句:
secure_file_priv=/var/lib/mysql
第一次創(chuàng)建啟動MySQL容器的時(shí)候,MySQL會訪問/var/lib/mysql
文件夾,如果沒有權(quán)限就會導(dǎo)致無法啟動,使用docker ps之后看不到mysql容器在運(yùn)行,需要設(shè)置secure_file_priv
的值指定為/var/lib/mysql
,這樣就有權(quán)限正常訪問和讀寫/var/lib/mysql目錄
Failed to access directory for --secure-file-priv. Please make sure that directory exists and is accessible by MySQL Server. Suppliedvalue : /var/lib/mysql-files
譯文:無法訪問–secure-file-priv的目錄。請確保該目錄存在并且可由MySQL服務(wù)器訪問。提供的值:/var/lib/mysql文件
- secure_file_priv的值為null ,表示限制mysqld 不允許導(dǎo)入|導(dǎo)出
- secure_file_priv的值為/tmp/ ,表示限制mysqld 的導(dǎo)入|導(dǎo)出只能發(fā)生在/tmp/目錄下
- secure_file_priv的值為空,表示不對mysqld 的導(dǎo)入|導(dǎo)出做限制
創(chuàng)建并啟動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:latest
參數(shù)說明:
-p 3306:3306
:將容器的3306端口映射到主機(jī)的3306端口--name mysql
:定義容器名稱為mysql-v /mydata/mysql/log:/var/log/mysql
:將MySQL的日志文件夾掛載到主機(jī)-v /mydata/mysql/data:/var/lib/mysql
:將MySQL的數(shù)據(jù)文件夾掛載到主機(jī)-v /mydata/mysql/conf:/etc/mysql
:將MySQL的配置文件夾掛載到主機(jī)-e MYSQL_ROOT_PASSWORD=root
:初始化root用戶密碼-d mysql:latest
:選擇MySQL版本為latest的鏡像構(gòu)建容器
查看正在運(yùn)行的容器
docker ps
進(jìn)入到MySQL容器內(nèi)部進(jìn)行配置
進(jìn)入命令
docker exec -it 容器id ./bin/bash
連接MySQL
這里因?yàn)槲覀冏约涸O(shè)置的MySQL
默認(rèn)密碼為root
所以p
后面為root
mysql -uroot -proot
更改MySQL密碼
使用mysql庫
use mysql
修改訪問主機(jī)以及密碼等,設(shè)置為所有主機(jī)可訪問
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
注意:mysql_native_password,mysql8.x版本必須使用這種模式,否則navicate無法正確連接
測試連接
測試前請保證關(guān)閉了防火墻,如果是云服務(wù)器記得開放3306規(guī)則
Linux關(guān)閉防火墻
# 關(guān)閉 systemctl stop firewalld # 禁止開機(jī)啟動防火墻 systemctl disable firewalld
云服務(wù)開放3306端口
使用Navicat測試連接
使用SQLyog測試連接
Docker安裝和配置MySQL教程結(jié)束!
以上就是Docker安裝配置MySQL的實(shí)現(xiàn)步驟的詳細(xì)內(nèi)容,更多關(guān)于Docker 安裝MySQL的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
docker部署elasticsearch和xpack密碼的詳細(xì)過程
本文主要介紹在docker環(huán)境下如何快速部署elasticsearch單機(jī)版本和集群版本,和增加xpack簡單用戶名密碼配置,文中有相關(guān)的代碼示例供大家參考,需要的朋友可以參考下2024-01-01使用Docker Compose 實(shí)現(xiàn)nginx負(fù)載均衡的方法步驟
這篇文章主要介紹了使用Docker Compose 實(shí)現(xiàn)nginx負(fù)載均衡的方法步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-05-05使用Docker部署Spring Boot項(xiàng)目的實(shí)現(xiàn)步驟
本文主要介紹了使用Docker部署Spring Boot項(xiàng)目的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12Docker使用Bind9實(shí)現(xiàn)域名解析的思路詳解
這篇文章主要介紹了DOCKER使用BIND9實(shí)現(xiàn)域名解析,主要包括刷新服務(wù)修改配置文件信息,實(shí)現(xiàn)思路也很簡單,本文給大家介紹的非常詳細(xì)對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-11-11Docker上部署mysql8主從復(fù)制的實(shí)現(xiàn)
本文主要介紹了Docker上部署mysql8主從復(fù)制的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08Docker 命令自動補(bǔ)全的實(shí)現(xiàn)
這篇文章主要介紹了Docker 命令自動補(bǔ)全的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12Docker安裝MySQL并使用Navicat連接的操作方法
這篇文章主要介紹了Docker安裝MySQL并使用Navicat連接,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-09-09