在 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. 物理机安装ESXi并优化部署虚拟机

    物理机配置 CPU,BIOS中启用虚拟化(VT-X) 内存和硬盘,内存尽量大.硬盘最好SSD,内存的大小和硬盘的速度直接决定了虚拟机运行的快慢 网络,至少一块千兆网卡(vSphere7.0版本以后支持 ...

  2. Nginx中location匹配及rewrite重写

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

  3. 面向对象第一单元总结:Java实现表达式求导

    面向对象第一单元总结:Java实现表达式求导 题目要求 输入一个表达式:包含x,x**2,sin(),cos(),等形式,对x求导并输出结果 例:\(x+x**2+-2*x**2*(sin(x**2+ ...

  4. 谈谈Linux字符设备驱动的实现

    @ 目录 字符设备驱动基础 申请设备号 创建设备节点 在驱动中实现操作方法 文件IO调用驱动中的操作 应用程序与驱动的数据交互 内核驱动如何控制外设 控制LED的简单驱动实例 驱动程序的改进 框架复盘 ...

  5. STM32—重定向printf和getchar函数到串口

    在STM32测试串口的时候经常需要在开发板和上位机之间传输数据,我们可以用c语言中的printf()函数和getchar()函数来简化传输. 以printf()为例: printf()函数实际上是一个 ...

  6. WinForm嵌入Web网页的解决方案

    企业级信息化系统绝大部分采用BS架构实现,如门户网站.OA系统.电商网站等,通过浏览器输入Web网址即可访问,对于使用者来说非常便捷,对于开发维护者来说也非常方便,程序维护只需更新服务器即可,使用者无 ...

  7. [源码解析] 深度学习流水线并行GPipe (2) ----- 梯度累积

    [源码解析] 深度学习流水线并行GPipe (2) ----- 梯度累积 目录 [源码解析] 深度学习流水线并行GPipe (2) ----- 梯度累积 0x00 摘要 0x01 概述 1.1 前文回 ...

  8. PHP随手记2--获取随机n位不重复字符

    定义一个函数返回26英文字母中n位不重复随机字符 基本思路是利用内置函数生成随机数,取出该位置字母之后将其删除,再进行下一次随机,最后实现字符串拼接就ok! 代码很简单,通俗易懂,直接上代码吧: 1 ...

  9. Clusternet - 新一代开源多集群管理与应用治理项目

    作者 徐迪,腾讯云容器技术专家. 汝英哲,腾讯云高级产品经理. 摘要 在过去的数年里,云计算领域经历了多次巨大的变革,当前越来越多的组织将应用部署在本地和云上的多个基础设施平台上,这些平台可能是两个公 ...

  10. WPF Grid新增框选功能

    有时候会有框选的需求,类似EXCEL一样,画一个框选择里面的子控件. 选择后比如可以将子控件的Border设置为红色边框 说下这个功能的大致原理.背景是一个Grid,比如里面放了很多的Button.  ...