myfreax

如何在CentOS 7安装MySQL

随着CentOS 7 MySQL的发布,CentOS的存储库中不再提供世界上最流行的开源关系数据库管理系统,MariaDB已成为默认的数据库系统

5 min read
By myfreax
如何在CentOS 7安装MySQL

随着CentOS 7 MySQL的发布,CentOS的存储库中不再提供世界上最流行的开源关系数据库管理系统MySQL,MariaDB已成为默认的数据库系统。

MariaDB是MySQL的向后兼容二进制替代。在本教程中,我们将向您展示如何在CentOS 7 Linux安装MySQL。

如果要安装MariaDB而不是MySQL,请查看我们的教程如何在CentOS 7安装MariaDB

在开始本教程之前,请确保您你以root用户或者具有sudo权限的用户登录到CentOS服务器。

最好的做法是以sudo用户而不是root用户运行管理命令,如果您的系统上没有sudo用户,则可以查看我们的教程如何在CentOS创建sudo用户

正如我们在介绍中提到的那样,默认CentOS 7仓库中没有MySQL,因此我们将需要启用MySQL的软件源/仓库,并从MySQL仓库中安装MySQL。

我们将向您展示如何安装MySQL 8.0。如果不确定要安装哪个版本,请查阅要在服务器上部署的应用程序的文档。

在撰写本文时,MySQL的最新版本是8.0版。要将其安装在CentOS 7服务器。首先使用启用MySQL 8.0存储库。

然后使用yum安装MySQL 8.0,在安装过程中,yum可能会提示您导入MySQL GPG密钥。输入y,然后按Enter

sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm 

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

sudo yum install mysql-community-server

如果你没有使用rpm命令导入MySQL的GPG key,你将会遇到以下错误。

warning: /var/cache/yum/x86_64/7/mysql80-community/packages/mysql-community-common-8.0.30-1.el7.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID 3a79bd29: NOKEY
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql


The GPG keys listed for the "MySQL 8.0 Community Server" repository are already installed but they are not correct for this package.
Check that the correct key URLs are configured for this repository.


 Failing package is: mysql-community-common-8.0.30-1.el7.x86_64
 GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

安装完成后,mysql将作为Systemd的服务在后台运行。你可以使用systemctl命令sudo systemctl enable mysqld使其能够在重启时自动启动。

除了设置自动启动,你还需要进行第一次的MySQL服务的启动,运行命令sudo systemctl start mysqld启动mysql服务。

然后你可以通过使用命令sudo systemctl status mysqld来检查MySQL服务状态。

● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since 三 2022-09-07 00:27:14 PDT; 2s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 1614 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
 Main PID: 1691 (mysqld)
   Status: "Server is operational"
    Tasks: 39
   CGroup: /system.slice/mysqld.service
           └─1691 /usr/sbin/mysqld

首次启动MySQL服务器时,将为MySQL root用户生成一个临时密码。您可以通过运行命令sudo grep 'temporary password' /var/log/mysqld.log来找到密码。

2022-09-07T07:27:11.326617Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: Y+y3cagOHgMa

连接MySQL

当MySQL安装完成后,你可能会想运行命令mysql -u root -p登录到MySQL服务器。

如果你登录到CentOS的用户不是root用户你将不能访问MySQL服务器。如果你尝试使用密码登录也将被拒绝连接。

你将会收到类似于这样的消息(28000): Access denied for user 'root'@'localhost' (using password: YES)或者ERROR 1045 (28000): Access denied for user 'root'@'localhost'。

这是因为在MySQL 8.0上,对root用户使用auth_socket插件进行身份验证。auth_socket插件仅对从localhost连接到Unix socket文件用户进行身份验证。

这意味着您无法通过提供密码来以root用户连接到MySQL服务器。但你可以通过命令sudo mysql连接到MySQL服务器。

sudo mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
mysql>

如果您要使用外部程序,例如phpMyAdmin。以root用户连接到MySQL服务器,则有两个选择。

第一个选项是将身份验证方法从auth_socket更改为mysql_native_password。您可以通过运行ALTER USER SQL语句命令来做到这一点。

第二个选项是创建一个新的专用管理用户,该用户可以访问所有数据库。

下面将使用第一个选项运行ALTER USER SQL语句使root用户使用密码进行身份验证。

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
FLUSH PRIVILEGES;

如果你需要配置MySQL用户的远程访问,可参考我们的教程如何允许MySQL数据库服务器的远程连接

结论

在本教程中,我们向您展示了如何在CentOS 7服务器安装和连接MySQL服务器。如果您有任何问题或反馈,请随时发表评论。

Related Articles