zoukankan      html  css  js  c++  java
  • 在 Docker 的 CentOS7 镜像 中安装 mysql

    在 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

  • 相关阅读:
    mysql-5.7.15-winx64免安装版配置
    db2 表授权语句
    java 调用 .net webservice 示例
    打印内存高解决方案
    eclipse快捷键调试总结【转】
    DevExpress GridControl 自定义 summary 算法
    GEMR: Get the parent window for view
    弹出窗口
    WPF UI虚拟化
    WPF应用程序最小化到系统托盘
  • 原文地址:https://www.cnblogs.com/battor/p/install_mysql_in_docker_image.html
Copyright © 2011-2022 走看看