mysql在centos7中rpm安装问题和方法

MySQL相关问题解答

MySQL RPM 包安装顺序及依赖解决

问题描述

www.mysql.com下载mysql-5.7.44-1.el7.x86_64.rpm-bundle.tar后,

1
tar -xvf mysql-5.7.44-1.el7.x86_64.rpm-bundle.tar

得到以下文件:

1
2
3
4
5
6
7
8
9
10
mysql-community-client-5.7.44-1.el7.x86_64.rpm
mysql-community-common-5.7.44-1.el7.x86_64.rpm
mysql-community-devel-5.7.44-1.el7.x86_64.rpm
mysql-community-embedded-5.7.44-1.el7.x86_64.rpm
mysql-community-embedded-compat-5.7.44-1.el7.x86_64.rpm
mysql-community-embedded-devel-5.7.44-1.el7.x86_64.rpm
mysql-community-libs-5.7.44-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.44-1.el7.x86_64.rpm
mysql-community-server-5.7.44-1.el7.x86_64.rpm
mysql-community-test-5.7.44-1.el7.x86_64.rpm

尝试安装 MySQL 5.7 RPM 包时遇到依赖冲突和缺失的问题。

解决方案

卸载 MariaDB 库

centos7中预装了 mariadb-libs,因为其与 MySQL 社区版包有文件冲突,需要卸载:

1
sudo rpm -e --nodeps mariadb-libs

如果系统没有安装,则无需卸载。

按顺序安装 MySQL RPM 包

按照以下顺序安装 MySQL RPM 包:

  1. 安装 mysql-community-common

    1
    sudo rpm -ivh mysql-community-common-5.7.44-1.el7.x86_64.rpm
  2. 安装 mysql-community-libsmysql-community-libs-compat

    1
    sudo rpm -ivh mysql-community-libs-5.7.44-1.el7.x86_64.rpm mysql-community-libs-compat-5.7.44-1.el7.x86_64.rpm
  3. 安装 mysql-community-client

    1
    sudo rpm -ivh mysql-community-client-5.7.44-1.el7.x86_64.rpm
  4. 安装 mysql-community-server,注意解决依赖项:

    • 确保安装了 Perl 和 net-tools:
      1
      sudo yum install perl net-tools
    • 然后安装 MySQL Server:
      1
      sudo rpm -ivh mysql-community-server-5.7.44-1.el7.x86_64.rpm

数据库初始化和配置

  1. 初始化数据库:

    1
    sudo mysqld --initialize --user=mysql [--basedir=/usr --datadir=/var/lib/mysql] # []内为可选

    在这里有疑问
    经测试即使不进行上面的初始化,在用’systemctl start mysqld’启动服务后,也会自动进行初始化。所谓初始化,可以理解为创建必须的数据库和用户,以及一些初始化数据。比如sys,mysql,performance_schema,information_schema四个数据库。其中mysql数据库是用来存储MySQL服务器内部信息的,比如用户信息权限信息,数据库信息等等。非常的关键。即使初学者也要了解其中的部分内容。初始化通常会创建一个超级用户账户,通常是 root 用户(如 ‘root‘@’localhost’)包含在mysql.user 表中。

  2. 启动 MySQL 服务:

    1
    sudo systemctl start mysqld

    如前面所述,初始化或启动 MySQL 服务后,会自动创建一个默认的 root 用户,密码为随机生成的字符串。这个密码存放在/var/log/mysqld.log 文件中。可以通过以下命令获取:

    1
    sudo grep 'temporary password' /var/log/mysqld.log

    只有获取了密码后,我们才可以使用以下命令登录 MySQL 服务器:

    1
    mysql -u root -p # 复制粘贴上面获取的密码

    进入数据库系统后,首先要重设密码。在重设密码前需要设置密码策略和密码的最小长度。

    1
    2
    3
    4
    set global validate_password_policy=low;
    set global validate_password_length=6; # 设置密码最小长度为6,根据题目要求。
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_new_password'; # 修改密码
    FLUSH PRIVILEGES;

    继续设置开启远程登录:

    1
    2
    3
    create user 'root'@'%' identified by 'your_new_password'; # 创建远程登录用户
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_new_password' WITH GRANT OPTION; # 授予权限
    FLUSH PRIVILEGES;
  3. 无密码初始化或无密码进入mysql服务器的两种方法,考试中经常用到:

    • 1,无密码初始化
    1
    sudo mysqld --initialize-insecure --user=mysql [--basedir=/usr --datadir=/var/lib/mysql] # []内为可选

    此时登录mysql服务器时,不需要输入密码,直接登录即可。

    • 2,无密码进入mysql服务器
      编辑 MySQL 的配置文件 (/etc/my.cnf),在 [mysqld] 部分下添加一行 skip-grant-tables。保存文件,然后正常启动 MySQL 服务 (sudo systemctl start mysqld 等)。可不需要密码进入。完成后务必记得移除这一行!
    1
    mysql -uroot

    以上两种方法无密码登录后,重设密码和创建远程登录按照前面的操作。
    展开说一说

    • mysql初始化后会创建一个数据库mysql,里面有一个表user.这个表里面有root用户,root用户是本地登录的,所以是root@localhost,而%是远程登录的,所以是root@%。
    • 可以通过下面命令查看这个表
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    mysql> select user,host from mysql.user;
    +---------------+-----------+
    | user | host |
    +---------------+-----------+
    | root | % |
    | mysql.session | localhost |
    | mysql.sys | localhost |
    | root | localhost |
    +---------------+-----------+
    4 rows in set (0.00 sec)

初学者因为对于命令的不熟悉,只能是亦步亦趋的复制粘贴,然而以上的命令是需要牢牢记住的,所以,我们要明白命令的含义,不断的练习。另外找个时间和地方,来解释这些命令。

[up主专用,视频内嵌代码贴在这]