在 CentOS / RedHat 上安装和配置 MariaDB MySQL 的 6 个步骤

举报
Tiamo_T 发表于 2021/11/25 21:38:15 2021/11/25
【摘要】 从 CentOS 7 开始,您将不会在 yum 存储库中看到名为 mysql-server 的包。 现在这个包被称为 mariadb-server。 MariaDB 是原始 MySQL 数据库的一个分支。就像最初的 MySQL 一样,MariaDB 也是开源的,由开源社区开发,由 MariaDB 公司维护和支持。

从 CentOS 7 开始,您将不会在 yum 存储库中看到名为 mysql-server 的包。

现在这个包被称为 mariadb-server。

MariaDB 是原始 MySQL 数据库的一个分支。就像最初的 MySQL 一样,MariaDB 也是开源的,由开源社区开发,由 MariaDB 公司维护和支持。

从我们的角度来看,只更改了包名。MariaDB 仍然是 MySQL,并且所有 mysql 命令行实用程序的名称仍然完全相同,包括名为 mysql 的命令。

本教程逐步解释了如何在基于 CentOS 或 RedHat 的 Linux 发行版上安装和配置 MariaDB。

1. MariaDB MySQL 包

以下是三个主要的 MariaDB 包:

  • mariadb-5.5.52-1.el7.x86_64 - 这包含几个 MySQL 客户端程序和实用程序。
  • mariadb-server-5.5.52-1.el7.x86_64 – 这是主要的 MariaDB MySQL 数据库服务器。
  • mariadb-libs-5.5.52-1.el7.x86_64 – 这包含客户端程序接口所需的共享库。

CentOS 7 yum 存储库中可用的 MariaDB 服务器的当前版本为 5.5.52,如下所示。

# yum info mariadb-server
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: repos-va.psychz.net
 * extras: linux.cc.lehigh.edu
 * updates: mirror.us.leaseweb.net
Available Packages
Name        : mariadb-server
Arch        : x86_64
Epoch       : 1
Version     : 5.5.52
Release     : 1.el7
Size        : 11 M
Repo        : base/7/x86_64

2. 安装 MariaDB MySQL 服务器

使用 yum install 安装 MariaDB MySQL 服务器包,如下所示。

# yum install mariadb-server

在这种情况下,在这台服务器上,它已经安装了 mariadb-server 以及以下依赖包。

  • mariadb-server.x86_64 1:5.5.52-1.el7
  • mariadb-libs.x86_64 1:5.5.52-1.el7
  • mariadb.x86_64 1:5.5.52-1.el7
  • libaio.x86_64 0:0.3.109-13.el7
  • perl-DBD-MySQL.x86_64 0:4.023-5.el7
  • perl-DBI.x86_64 0:1.627-4.el7
  • perl-Compress-Raw-Bzip2.x86_64 0:2.061-3.el7
  • perl-Compress-Raw-Zlib.x86_64 1:2.061-4.el7
  • perl-Data-Dumper.x86_64 0: 2.145-3.el7
  • perl-IO-Compress.noarch 0:2.061-2.el7
  • perl-Net-Daemon.noarch 0:0.48-5.el7
  • perl-PlRPC.noarch 0:0.2020-14.el7

验证以确保这已经安装了三个重要的 MariaDB mysql 包。

# rpm -qa | grep -i maria
mariadb-5.5.52-1.el7.x86_64
mariadb-server-5.5.52-1.el7.x86_64
mariadb-libs-5.5.52-1.el7.x86_64

3. 启动 MariaDB 数据库

如下所示,mariadb 数据库服务器模块已加载,但尚未启动。

# systemctl status mariadb
? mariadb.service - MariaDB database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

使用 systemctl 启动 MariaDB mysql 服务器,如下所示。

# systemctl start mariadb

验证 systemctl 状态以确保 mariadb 数据库服务器已成功启动。

# systemctl status mariadb
? mariadb.service - MariaDB database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2017-06-26 18:26:35 UTC; 13s ago
  Process: 4049 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=0/SUCCESS)
  Process: 3969 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=0/SUCCESS)
 Main PID: 4048 (mysqld_safe)
   CGroup: /system.slice/mariadb.service
           +-4048 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
           +-4206 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mariadb/ma...

Jun 26 18:26:32 deploy mariadb-prepare-db-dir[3969]: The latest information about MariaDB is available at http://mariadb.org/.
Jun 26 18:26:32 deploy mariadb-prepare-db-dir[3969]: You can find additional information about the MySQL part at:
Jun 26 18:26:32 deploy mariadb-prepare-db-dir[3969]: http://dev.mysql.com
Jun 26 18:26:32 deploy mariadb-prepare-db-dir[3969]: Support MariaDB development by buying support/new features from MariaDB
Jun 26 18:26:32 deploy mariadb-prepare-db-dir[3969]: Corporation Ab. You can contact us about this at sales@mariadb.com.
Jun 26 18:26:32 deploy mariadb-prepare-db-dir[3969]: Alternatively consider joining our community based development effort:
Jun 26 18:26:32 deploy mariadb-prepare-db-dir[3969]: http://mariadb.com/kb/en/contributing-to-the-mariadb-project/
Jun 26 18:26:32 deploy mysqld_safe[4048]: 170601 18:26:32 mysqld_safe Logging to '/var/log/mariadb/mariadb.log'.
Jun 26 18:26:32 deploy mysqld_safe[4048]: 170601 18:26:32 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
Jun 26 18:26:35 deploy systemd[1]: Started MariaDB database server.


4. 连接并验证 MariaDB 服务器

使用如下所示的mysql命令,以mysql的root用户连接数据库。

# mysql -u root
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.52-MariaDB MariaDB Server

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>

以下 show database 命令将显示默认的 mysql 数据库。

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+

5. 执行 MariaDB 安装后步骤

正如您从上面看到的,默认情况下,安装不会为 MySQL 根帐户分配任何密码。

要设置 mysql root 用户密码并在数据库上执行其他安全配置,请执行 mysql_secure_installation 脚本,如下所示。

# /usr/bin/mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

由于这是我们第一次运行此脚本,因此没有为 mysql root 帐户分配密码。所以,在这里按回车键。

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

在此阶段,说“y”为 MySQL 根帐户分配密码。之后输入密码。

请注意,此 mysql root 帐户与 linux root 帐户不同。所以,这里我们设置的是mysql root账户的密码,与Linux root账户无关。

Set root password? [Y/n] y
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!

作为默认安装的一部分,mysql 安装匿名用户,该用户无需真实用户即可登录数据库。所以,我们真的应该删除这个用户。

Remove anonymous users? [Y/n] y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

可以想象,mysql root 帐户将可以访问所有 mysql 数据库。因此,保持这种安全是很重要的。此外,我们应该确保不允许来自其他服务器的远程客户端使用此 mysql root 帐户进行连接。

相反,只有 localhost(安装 mysql 服务器的地方)可以使用 root 帐户连接。所以,我们真的应该禁止远程root登录。

Disallow root login remotely? [Y/n] y
 ... Success!

这是默认的测试数据库,我们应该将其删除。

Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

在此处输入 y 以确保我们到目前为止所做的所有更改都会立即生效。

Reload privilege tables now? [Y/n] y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

6. 验证 MySQL 根访问权限

现在,如果您在没有 root 密码的情况下连接到 Mysql,您将收到以下拒绝访问错误消息。

# mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

要指定密码,请使用 -p 选项,如下所示。这将提示用户输入密码。

# mysql -u root -p
Enter password: 

此外,正如您在下面的 show databases 命令中看到的那样,现在删除了测试数据库。

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+

如果要在 mysql 命令行中传递密码,请在 -p 选项旁边指定它,如下所示。

# mysql -u root -pMySecurePassword

注意: -p 和密码之间没有空格。这可能会引起一些混淆,因为我们在 -u 和用户名之间有空格。但是,-p 和密码之间没有空格。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。