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 或者不加这个环境变量 
相关文章
相关标签/搜索