一、为什么 LNMP 需要先准备数据库¶
对于 WordPress 这类动态网站来说,页面内容、用户信息、文章数据都不可能只靠静态文件保存。
因此在 LNMP 中,数据库是动态站点上线前必须先准备好的基础组件。
原笔记选择的是 MariaDB,整体思路非常清晰:
- 先安装并启动数据库
- 再做安全初始化
- 然后创建业务数据库和账号
- 最后验证本地和远程是否都能正常连接
二、如何安装并启动 MariaDB¶
原笔记的安装步骤如下:
# 安装 mariadb-server
[root@oldboy01 conf.d]# yum install -y mariadb-server
# 设置启动并开机自启
[root@oldboy01 conf.d]# systemctl enable mariadb
[root@oldboy01 conf.d]# systemctl start mariadb
启动完成后,再检查端口和进程:
[root@oldboy01 conf.d]# ss -lntup | grep mysql
[root@oldboy01 conf.d]# ps -ef | grep mysql
只要能看到 3306 端口监听,并且 mysqld 进程正常存在,就说明数据库服务已经启动。
三、为什么安装后还要做安全初始化¶
原笔记接着用了 mysql_secure_installation 做首次安全配置:
[root@oldboy01 conf.d]# mysql_secure_installation
这个过程主要完成几件事:
- 给数据库
root设置密码 - 删除匿名用户
- 禁止
root远程登录 - 删除测试数据库
- 刷新权限表
这些动作虽然都是初始化时的一次性操作,但对安全性影响很大。
原笔记还特别提醒:
- Linux 的
root和数据库里的root是两个完全独立的用户 - Linux
root管理整个操作系统 - 数据库
root只负责管理 MySQL/MariaDB
四、进入数据库前要先理解哪些基础概念¶
原笔记对数据库几个基本术语做了很接地气的解释:
- 库
database:可以理解成一个 Excel 文件 - 表
table:像这个文件里的一个 Sheet - 字段:列名
- 记录:一行数据
对刚接触数据库的人来说,这样理解很容易建立基本概念。
五、常见数据库操作有哪些¶
原笔记把常见操作拆成了查看、创建、删除和测试几部分。
5.1 查看¶
show databases;
show tables from mysql;
select user,host from mysql.user;
这些语句分别用于:
- 查看所有数据库
- 查看某个库中的表
- 查看数据库用户及其来源主机
5.2 创建数据库和授权用户¶
原笔记给出的示例如下:
create database lidao;
grant all on lidao.* to 'lidao'@'localhost' identified by '1';
grant all on lidao.* to 'lidao'@'172.16.1.%' identified by '1';
这里最重要的是授权中的白名单概念:
'localhost'表示只能在本机连接'172.16.1.%'表示允许局域网内对应网段访问%虽然更宽松,但安全性更差
原笔记还提醒了一个细节:
%并不包含localhost
5.3 删除¶
drop database lidao;
drop user 'lidao'@'172.16.1.%';
drop user 'lidao'@'localhost';
这部分适合在测试环境里清理演示数据。
六、如何验证数据库连接是否正常¶
原笔记给了两种典型测试方式。
6.1 本地登录测试¶
[root@oldboy01 conf.d]# mysql -ulidao -p1
登录后再执行:
show databases;
如果能看到业务库 lidao,说明本地授权可用。
6.2 远程登录测试¶
先在外部机器安装 MariaDB 客户端工具:
[root@oldboy02 ~]# yum localinstall -y mariadb-5.5.68-1.el7.x86_64.rpm
然后远程连接:
[root@oldboy02 ~]# mysql -ulidao -p1 -h172.16.1.20
如果能成功登录,就说明远程授权和网络访问都已经正确。
七、小结¶
MariaDB 这一部分可以总结成一个标准顺序:
- 安装并启动服务
- 做首次安全初始化
- 创建业务数据库和业务用户
- 根据访问场景设置授权白名单
- 分别验证本地和远程连接
对 LNMP 来说,数据库准备得是否规范,往往会直接影响后面的 PHP 代码部署和站点可用性。