docker 安装mysql
2019-02-21 15:58 糯米粥 阅读(1173) 评论(0) 编辑 收藏 举报通过命令: docker search mysql 搜索mysql,可以发现标记的那两个是官方的
也可以在https://hub.docker.com上搜索mysql
网站上面搜索的会有很多配置提示,
右边显示的是pull命令:
输入命令: docker pull mysql/mysql-server
也可以直接 docker run 语法,因为当run的时候,docker发现本地没有该镜像,回去该网站上pull
最好在创建镜像的时候就指定用户名,密码和字符集,语法:
docker run -d -p 3306:3306 -e MYSQL_USER="nsky" #新增用户名 nsky -e MYSQL_PASSWORD="password" #nksy的密码 -e MYSQL_ROOT_PASSWORD="password" #root的密码 --name [Name] [ImageName] #容器名称 镜像名称,就是说以哪个镜像为基础创建容器 --character-set-server=utf8 #字符集 --collation-server=utf8_general_ci #级别
根据上面的语法,修改容器名称和镜像名称
docker run -d -p 3306:3306 -e MYSQL_USER="nsky" -e MYSQL_PASSWORD="password" -e MYSQL_ROOT_PASSWORD="password" --name mysql01 mysql/mysql-server --character-set-server=utf8 --collation-server=utf8_general_ci
注意,你直接这样复制命令是不行的,因为回车
解决方法:
1:不回车,变成一行
2:在回车后面加入空格右斜杠 \
docker run -d -p 3306:3306 \ -e MYSQL_USER="nsky" \ -e MYSQL_PASSWORD="password" \ -e MYSQL_ROOT_PASSWORD="password" \ --name mysql01 mysql/mysql-server \ --character-set-server=utf8 \ --collation-server=utf8_general_ci
然后在命令工具里面粘贴,回车,创建成功
docker ps 查看运行的容器,状态显示已经启动
启动中是这样的:
进入容器: docker exec -it mysql01 bash
登录mysql : mysql -uroot -p
使用数据库:
查看用户名: select user,host from user;
从可以看到root的host是localhost,说明只能通过localhost登陆,localhost以外的地方就不能连接了。用Navicat可以测试下
用nsky可以
我用nsky登陆的,没有权限使用数据库,用root登陆,给权限命令: GRANT ALL PRIVILEGES ON *.* TO 'nsky'@'%' WITH GRANT OPTION;
可以在创建用户的时候,就让他可以在外部连接: CREATE USER 'test'@'%' IDENTIFIED BY 'pwd123456';
查看字符集: show variables like '%char%';
查看当前的collation: show variables like 'collation%';
但容器一删除,刚这些配置都没有了,所以建议是数据卷volume ,挂载
后期建议用mount ,语法更简单
其实就是容器的文件跟宿主机的一个绑定
退出mysql容器,输入exit即可
语法:
#注意:需要先创建/docker/mysql/config/my.cnf文件和/docker/mysql/data文件夹
docker run -d -p 3306:3306 --name mysql01 -v=/docker/mysql/config/my.cnf:/etc/my.cnf -v=/docker/mysql/data:/var/lib/mysql mysql/mysql-server
在chentos系统中,要区分是根目录还是root目录
这是root目录,[root@localhost~]
这是根目录 [root@localhost /]
如果是root目录。那么:-v=/root/mysql/m.cnf
如果是根目录,那么:-v=/mysql/m.cnf
my.cnf如下
[mysqld] user=mysql character-set-server=utf8 [client] default-character-set=utf8 [mysql] default-character-set=utf8
[mysqld]
user=mysql
socket=/tmp/mysql.sock
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
确定后,进入容器,修改密码
修改密码语句
mysql5.7版本语法:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('password');
mysql5.7之后版本语法:
ALTER user 'root'@'localhost' IDENTIFIED BY '123456'
可以通过命令: docker inspect mysql02
来看这个容器的一些参数和配置,比如我们配置的资料卷挂载
这样删除容器,在重新创建一个的话的,配置依然存在
当然,你创建容器的时候,-v后面的环境变量绑定必须之前的宿主机的路径
参考:https://shimo.im/docs/anrlYMFEYloN52c8