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;
添加到my.cnf this
[mysqld] character-set-server=utf8 [client] default-character-set=utf8 [mysql] default-character-set=utf8
查看字符集命令編碼
show variables like '%char%';
直接複製這個就能夠了加密
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
#注意:須要先建立/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
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'
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;
備註: : 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 或者不加這個環境變量