在 Docker 的 CentOS7 镜像 中安装 mysql

本来以为是个很简单的过程居然折腾了这么久,之前部署云服务器时也没有好好地记录,因此记录下。

特别提醒:本文的操作环境是在 Docker 的 CentOS7 镜像中,与实际的 CentOS7 环境会略有不同(在 CentOS7 中使用 yum 安装后即可直接使用,而在镜像中多了很多配置步骤和报错解决)。而如果启动容器使用 docker run -it --privileged --name centos7 centos:7 /usr/sbin/init 似乎与真实环境比较接近。本文可作为 Linux 下安装 mysql 的参考,但在容器中安装 mysql 实际意义不大,官方已经有了啊233333。

简要注意点:下载并安装源、启动时错误解决、开启关闭服务、首次登陆修改密码、允许从任意 ip 以 root 身份登陆

  1. 首先使用:wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm 下载mysql的官方源(可能需要先安装 wget )

  2. 之后使用:rpm -ivh mysql57-community-release-el7-9.noarch.rpm 安装源

  3. 使用 yum install mysql-server 安装,并启动 mysqld --user root (由于云服务器默认使用 root)。

    此时可能立刻停止后退出,并报 Can't open and lock privilege tables: Table 'mysql.user' doesn't exist 错误,查看配置文件 /etc/my.conf,发现其中有一句 datadir=/var/lib/mysql,因此使用 mysqld --initialize --user=mysql --datadir=/var/lib/mysql 初始化mysql。

    再次报错并提示 --initialize specified but the data directory has files in it. Aborting,则删除并重建/var/lib/mysql 目录后即可。

  4. 使用 cat /var/log/mysqld.log | grep password 查看临时密码,登陆后用 SET PASSWORD FOR root@localhost = password('<PASSWORD>'); 修改密码。如果提示密码不合要求,用 SET global validate_password_policy=LOW; 降低密码要求 。

  5. 设置允许 root 从任意 ip 登陆

    use mysql;
    select user, host from user;
    update user set host = '%' where user = 'root'; # 原值为localhost
    flush privileges;

    亦可使用:

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '<YOUR_ROOT_PASSWORD>' WITH GRANT OPTION;
    flush privileges;

    其中 “ *.* ” 代表所有资源所有权限, “ 'root'@% ” 其中 root 代表账户名,% 代表所有的访问地址,也可以使用一个唯一的地址进行替换,只有一个地址能够访问。如果是某个网段的可以使用地址与%结合的方式,如 10.0.42.%。IDENTIFIED BY 'root',这个 root 是指访问密码。WITH GRANT OPTION 允许级联授权。

    切记无论什么时候一定要搞清命令的含义再执行!!!

    鄙人就是因为没有搞清楚此条命令的含义,照抄照搬。别人的 <YOUR_ROOT_PASSWORD> 写 “root” 我也跟着写 “root”,自然搞得一团糟而且登陆不上去。

  6. 启动 mysql 服务。有两种方式,但必须组合使用,不能混用:

    • 使用 systemctl (针对CentOS 7.0及以上版本,7.0 以下版本使用 service 命令)
    systemctl start mysqld
    systemctl stop mysqld
    • 使用 mysql 程序自带的命令
    # 由于云服务器默认root登陆,需要加上 --user root
    # & 号表示后台运行,否则会阻塞
    mysqld start --user root &
    mysqladmin -u root -p shutdown

完成!

参考

mysql 安装配置:

https://www.cnblogs.com/zymnstlm/p/12381627.html

https://www.cnblogs.com/zhongxinWang/p/10606733.html

mysql 设置允许 root 远程登录:

https://blog.csdn.net/zhazhagu/article/details/81064406

mysql 服务的启动和关闭:

https://blog.csdn.net/lihuarongaini/article/details/100119869

mysql 密码强度设置:

https://blog.csdn.net/hello_world_qwp/article/details/79551789

mysql 初始化:

https://blog.csdn.net/weixin_42654817/article/details/88722778

在 Docker 的 CentOS7 镜像 中安装 mysql的更多相关文章

  1. Centos7服务器中安装MySQL(选择一个你想要的版本)

    开始,我默认安装了MySQL8,但是在测试的时候发现通过Hibernate连接之前的MySQL5.7的代码运行在连接新版本的库的时候发生异常,出于时间原因没有深度排查 但是我严重怀疑是版本匹配问题,为 ...

  2. centos7.4中安装docker

    #!/bin/sh # 安装docker # 在docker中安装mysql # 解决了docker容器中无法输入中文的问题 ##########################安装docker # ...

  3. 在docker中安装mysql

    #!/bin/sh # 安装docker # 在docker中安装mysql # 解决了docker容器中无法输入中文的问题 ##########################安装docker # ...

  4. centos7中安装mysql

    centos7中安装mysql网上已经很多资源了,我就不在赘述了.我这里只是记录下我安装的时候出现的一些问题. 原文:https://www.cnblogs.com/bigbrotherer/p/72 ...

  5. Windows10系统的Linux子系统中安装MySQL数据库心得

    后端开发童鞋们, 自己开发机用的是Windows系统电脑(台式机或笔记本), 而开发的程序和使用的数据库等要运行在Linux服务器上, 这种情况有木有? 提前声明: 本文并不讨论操作系统的比较, 以及 ...

  6. Docker 02 - 向 Docker 的 Tomcat 镜像中部署 Web 应用

    目录 1 下载 Docker 镜像 2 部署Web项目 2.1 通过Dockerfile自定义项目镜像 2.2 启动自定义镜像, 生成一个容器 2.3 另一种启动方式: 交互式启动 3 (附) 向镜像 ...

  7. 在 virtualbox 的 centos7 虚拟机中安装增强工具

    在 virtualbox 的 centos7 虚拟机中安装增强工具 centos7 刚刚安装完成时,直接安装 virtualbox 增强工具会出错,需要先把 gcc / kernel-devel / ...

  8. Linux centos7环境下安装MySQL的步骤详解

    Linux centos7环境下安装MySQL的步骤详解 安装MySQL mysql 有两个跟windows不同的地方 1).my.ini 保存到/etc/my.ini 2).用户权限,单独用户执行 ...

  9. centos 7 中安装 mysql 5.7

    centos 7 中安装 mysql 5.7 环境说明: 查看centos的版本:cat /etc/redhat-release 安装和配置步骤: 下载 mysql 源安装包: sudo curl - ...

随机推荐

  1. Nginx中location匹配及rewrite重写

    目录 一.常用的Nginx正则表达式 二.location 2.1.location三类匹配类型 2.2.常用的匹配规则 2.3.location优先级 2.3.1.举例说明 2.4.实际网站使用中, ...

  2. linux的iptables设置

    添加规则 -A 在链末尾追加一条规则 -I 在链开头或某序号前插入一条规则 查看规则 -L 列出所有规则 -n 数字显示地址和端口信息 -v 详细信息 -line-numbers 显示规则序号 删除规 ...

  3. 如何不耍流氓的做运维之-SHELL脚本

    前言 大家都是文明人,尤其是做运维的,那叫一个斯文啊.怎么能耍流氓呢?赶紧看看,编写SHELL脚本如何能够不耍流氓. 下面的案例,我们以MySQL数据库备份SHELL脚本的案例来进行阐述: 不记录日志 ...

  4. php本地文件包含 Writeup

    目录 本地文件包含 LFI本地文件包含案例一 LFI本地文件包含案例二 本地文件包含简介 文件包含函数加载的参数没有经过过滤或者严格的定义,可以被用户控制,包含其他恶意文件,导致了执行了非预期的代码. ...

  5. 017 PCIe总线的事务层(一)

    一.PCIe总线的事务层 事务层是PCIe总线层次结构的最高层,该层次将接收PCIe设备核心层的数据请求,并将其转换为PCIe总线事务,PCIe总线使用的这些总线事务在TLP头中定义.PCIe总线继承 ...

  6. Dart空安全的底层原理与适配

    一.在空安全推出之前,静态类型系统允许所有类型的表达式中的每一处都可以有 null. 从类型理论的角度来说,Null 类型被看作是所有类型的子类: 类型会定义一些操作对象,包括 getters.set ...

  7. SQL 练习5

    查询平均成绩大于等于 60 分的同学的学生编号和学生姓名和平均成绩 SELECT Student.SId,Sname,t.[平均成绩] from Student , (SELECT sid , AVG ...

  8. NOIP 模拟 $34\; \rm Merchant$

    题解 \(by\;zj\varphi\) 对于选的物品,总值一定有在前一段区间递减,后一段递增的性质,那么就可以二分. check()时只递归归并大的一段,用nth_element即可 Code #i ...

  9. 【设计模式】装饰者模式(DecoratorMode0

    From: https://liudongdong1.github.io/ 装饰者模式(Decorator Pattern):动态地给一个对象增加一些额外的职责,增加对象功能来说,装饰模式比生成子类实 ...

  10. Ubuntu时间有误差,设置系统时间与网络时间同步

    转载地址:https://blog.csdn.net/qq_33733970/article/details/78823620