CentOS7 服务器安装 MySQL

扩展阅读:
How to Install MySQL on CentOS 7
云服务器 ECS > 用户指南 > 安全组 > 添加安全组规则
MySQL安全配置向导mysql_secure_installation详解
centos7 mysql数据库安装和配置

CentOS7 服务器安装 MySQL

😯 本文档是基于非 root 用户的,需要 sudo 前缀以提升权限,如果是 root 用户,则可忽略该前缀。
使用阿里云ECS,需要配置安全组规则,详见文档具体章节。

开始之前

检查你的主机状态:

1
2
3
4
[root]# hostname		// 短主机名
iZwz97v8o1cbogw4uplc4dZ
[root]# hostname -f // 同时带有主机名和域名的名称
iZwz97v8o1cbogw4uplc4dZ

更新系统的 yum

1
sudo yum update

安装 wget ,用以完成 MySQL 安装

1
yum install wget

Yum (全称为:Yellow dog Updater, Modified) 由Duke University团队,修改Yellow Dog Linux的Yellow Dog Updater开发而成,是一个基于RPM 包管理的字符前端软件包管理器。能够从指定的服务器自动下载 RPM 包并且安装,可以处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。被Yellow Dog Linux本身,以及Fedora、Red Hat Enterprise Linux采用。

GNU Wget是一个在网络上进行下载的简单而强大的自由软件,其本身也是GNU计划的一部分。它的名字是“World Wide Web”和“Get”的结合,同时也隐含了软件的主要功能。目前它支持通过HTTP、HTTPS,以及FTP这三个最常见的TCP/IP协议协议下载。

安装 MySQL

下载和安装仓库,并且使用yum更新它

1
2
3
4
5
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm

yum update

安装 MySQL 服务,遇到校验时,如果没有错误或匹配错误请选择 y

1
2
3
sudo yum install mysql-server		// 安装服务

sudo systemctl start mysqld // 启动服务

MySQL 默认绑定 localhost (127.0.0.1),了解使用 ssh 连接到数据库的信息。

MySQL remote access guide

⚠️ MySQL 不建议不设限制地通过公共IP连接,你可以修改配置文件 /etc/my.cnf以更改监听地址,如果决定将MySQL绑定到公共IP,则应该实现只允许特定IP地址的连接的防火墙规则。

安全配置向导(Harden MySQL Server)

运行 mysql_secure_installation 设置默认的 MySQL 安全问题

1
sudo mysql_secure_installation

⚠️ 第一次配置时,没有给 root 用户设置密码,直接回车可以设置初始密码。

具体的设置规则:

  • root 用户设置密码
  • 删除匿名账号
  • 取消 root 用户远程登录
  • 删除 test 库和对 test 库的访问权限
  • 刷新授权表使修改生效

可以参考:MySQL安全配置向导mysql_secure_installation详解

使用MySQL

Root 用户登录

  • root 登录 MySQL
1
mysql -u root -p

  • 生成 MySQL 命令提示列表 \h

创建一个新的 MySQL 用户 和 仓库

1
2
3
4
5
6
7
8
// testdb 为数据库名
create database testdb;

// testuser 用户名;password:密码
create user 'testuser'@'localhost' identified by 'password';

// 赋予testuser用户所有权限
grant all on testdb.* to 'testuser' identified by 'password';

以上命令可以缩短为:

1
2
3
create database testdb;

grant all on testdb.* to 'testuser' identified by 'password';

完成后退出 MySQL

1
exit

创建一个简单表

使用之前创建的 testuser 用户登录:

1
mysql -u testuser -p

创建简单的表

1
2
3
use testdb;

create table customers (customer_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, first_name TEXT, last_name TEXT);enter code here

重设 ROOT 密码

root 用户登录

1
mysql -u root -p

切换到mysql ,重置密码,并且刷新

1
2
3
4
5
6
7
use mysql;

update user SET PASSWORD=PASSWORD("password") WHERE USER='root';

flush privileges;

exit

重启 MySQL

1
2
3
4
sudo systemctl start mysqld

// 或者
service mysqld start

远程连接

远程连接设置

把在所有数据库的所有表的所有权限赋值给位于所有 IP 地址的 root 用户。

1
mysql> grant all privileges on *.* to root@'%'identified by 'password';

如果是新用户而不是root,则要先新建用户

1
mysql>create user 'username'@'%' identified by 'password';

此时就可以进行远程连接了。

⚠️ 阿里云添加安全组规则

云服务器 ECS > 用户指南 > 安全组 > 添加安全组规则

常用端口选择 MySQL 3306 授权对象为 0.0.0.0/0