docker 安裝mysql mongo

Docker安裝Mysql

1.拉取鏡像mysql

docker pull mysql/mysql-server

 

2.運行mysqlsql

docker run -d -p 3306:3306 --name [Name] [ImageName] //示例
docker run -d -p 3306:3306 --name mysql01 mysql/mysql-server

 

3.進入容器docker

docker exec -it [ContainerName] bash //示例
docker exec -it mysql01 bash

4.進入mysql的命令行bash

命令行進入mysql的root帳戶:less

mysql -uroot -p

這時候操做mysql會報錯 ,讓修改密碼 請看 常見錯誤解決模塊dom

建立新用戶
mysql> CREATE USER 'test'@'localhost' IDENTIFIED BY 'pwd123456'; mysql> GRANT ALL PRIVILEGES ON *.* TO 'test'@'localhost' WITH GRANT OPTION; mysql> CREATE USER 'test'@'%' IDENTIFIED BY 'pwd123456'; mysql> GRANT ALL PRIVILEGES ON *.* TO 'test'@'%' WITH GRAN  T OPTION;
修改MYSQL 默認字符集

添加到my.cnf this

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

查看字符集命令編碼

show variables like '%char%';
docker容器參數啓動Mysql (用容器參數添加新用戶和修改root帳戶密碼,修改字符集)

直接複製這個就能夠了加密

docker run -d -p 3306:3306 -e MYSQL_USER="test" -e MYSQL_PASSWORD="password" -e MYSQL_ROOT_PASSWORD="password" --name [Name] [ImageName] --character-set-server=utf8 --collation-server=utf8_general_ci

這個和上面同樣只不過用換行整理過(不要複製這個,用不了)spa

docker run -d -p 3306:3306 
-e MYSQL_USER="test" 
-e MYSQL_PASSWORD="password" 
-e MYSQL_ROOT_PASSWORD="password" 
--name [Name] [ImageName] --character-set-server=utf8 --collation-server=utf8_general_ci

掛載資料卷

mysql掛載資料卷

 
提早在指定的目錄下建立一個my.cnf文件,目錄名最好爲英文且不帶特殊符號和空格,文件內容以下,注意:粘貼時要把每一行末尾的空格去除,不然運行時會報錯說utf8編碼錯誤

#注意:須要先建立/docker/mysql/config/my.cnf文件和/docker/mysql/data文件夾

my.cnf以下

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

用外部volume

docker run -d -p 3306:3306 --name mysql01 -v=/docker/mysql/config/my.cnf:/etc/my.cnf -v=/docker/mysql/config/data:/var/lib/mysql mysql/mysql-server

mongo掛載資料卷

docker run -d -p 27017:27017 --name mongo01 -v /docker/mongo/config:/data/configdb -v /docker/mongo/db:/data/db mongo

常見錯誤解決

修改密碼語句

mysql5.7版本語法:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('password');

mysql5.7以後版本語法:

ALTER user 'root'@'localhost' IDENTIFIED BY 'password'
navicat鏈接mysql報錯1251解決方案

MySQL8.0,發現Navicat鏈接不上,老是報錯1251;

緣由是MySQL8.0版本的加密方式和MySQL5.0的不同,鏈接會報錯。

1.先經過命令行進入mysql的root帳戶:

mysql -uroot -p

2.更改加密方式

ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;

3.從新修改密碼(注意修改你要遠程鏈接的用戶)

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

4.刷新

FLUSH PRIVILEGES;

Docker run with 環境變量和鏡像配置

備註: : When this is true (which is its default state, unless MYSQL_ROOT_PASSWORD is set or MYSQL_ALLOW_EMPTY_PASSWORD is set to true), a random password for the server's root user is generated when the Docker container is started
當這個MYSQL_RANDOM_ROOT_PASSWORD 爲true 時 爲root用戶設置密碼是沒有做用的仍是會生成隨機的密碼,設置爲false 或者不加這個環境變量 
相關文章
相關標籤/搜索