Docker安裝及使用Mysql

 

 

我們可以下拉別人的Mysql鏡像也可以通過Dockerfile自己構建Mysql鏡像,方便起見,我是下拉的docker官方的Mysql鏡像

1.使用如下命令查看dockerhub中的所有mysql鏡像

docker search mysql

2.官方的mysql鏡像的名稱爲mysql,所以我們輸入以下命令進行下拉

docker pull mysql

3.運行一個mysql容器

docker run --name first-mysql -p 3306:3306 -e MYSQL\_ROOT\_PASSWORD=123456 -d mysql


--name               後面是這個鏡像的名稱
-p 3306:3306   暴露3306端口,表示在這個容器中使用3306端口(第二個)映射到本機的端口號也爲3306(第一個)

-e MYSQL_ROOT_PASSWORD=123456 設置root用戶密碼
-d                       表示使用守護進程運行,即服務掛在後臺

4.登錄容器的mysql,設置訪問權限,以及導入一些數據庫文件

我們的docker容器中的mysql一般都是需要允許遠程連接的,所以我們進行如下設置

docker exec -it first-mysql bash

exec命令            在容器first-mysql中開啓一個交互模式的終端

-i                          即使沒有附加也保持STDIN 打開

-t                          分配一個僞終端

連接到容器mysq

mysql -hlocalhost -uroot -p123456

添加一個root用戶,主機爲%(意爲任何主機)

create user 'root'@'%' identified by '123456';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

//創建一個用戶,mysql 8 之後要求先創建用戶,再授權,而不能在授權時創建用戶

create user 'root'@'%' identified by '123456';

//授權用戶爲超級管理用戶

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

//刷新權限

FLUSH PRIVILEGES;

5.暴露centos服務器的3306端口

開啓系統防火牆:

systemctl start firewall.service

開啓端口:

firewall-cmd --zone=public --add-port=3306/tcp --permanent

 --zone #作用域

--add-port=3306/tcp #添加端口,格式爲:端口/通訊協議

--permanent #永久生效,沒有此參數重啓後失效

需要重啓服務器 

firewall-cmd --reload

查看開放的端口:

firewall-cmd --list-ports

到此爲止,我們的mysql服務器就創建成功了,我們可以在本地使用 Navicat for MySQL等mysql圖形化界面進行連接啦。注意:

1.連接的主機名爲centos服務器的ip地址

2.如果mysql的版本爲8.0以上,則連接時可能會報1251的錯誤,這是因爲:mysql8 之前的版本中加密規則是mysql_native_password,而在mysql8之後,加密規則是caching_sha2_password。解決方法如下:

//更改用戶密碼驗證方式

ALTER USER 'root'@'%' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;

//刷新更改密碼驗證方式之後的密碼

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

//刷新權限

FLUSH PRIVILEGES;

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