docker 安装mysql
2019-02-21 15:58 糯米粥 阅读(1175) 评论(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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
2013-02-21 asp.net(c#)中String.Empty、NULL、"" 三者到底有啥区别和联系?【讨论题】