在CentOS系统中创建数据库是许多服务器管理和开发任务中的基础操作,不同类型的数据库系统(如MySQL、PostgreSQL、MariaDB等)在CentOS上的创建方法略有差异,但总体流程相似,本文将以最常用的MariaDB和PostgreSQL为例,详细介绍在CentOS上创建数据库的步骤、注意事项及相关配置,帮助读者顺利完成数据库的部署与初始化。

准备工作:安装数据库管理系统
在创建数据库之前,首先需要确保系统已安装对应的数据库管理系统,以MariaDB为例,CentOS 7及以上版本默认使用MariaDB作为MySQL的替代品,可以通过以下命令安装MariaDB服务器:
sudo yum install mariadb-server mariadb
安装完成后,启动MariaDB服务并设置开机自启:
sudo systemctl start mariadb sudo systemctl enable mariadb
对于PostgreSQL,安装命令如下:
sudo yum install postgresql-server postgresql
安装后需初始化数据库并启动服务:
sudo postgresql-setup --initdb sudo systemctl start postgresql sudo systemctl enable postgresql
配置数据库安全设置
首次安装数据库后,建议运行安全配置脚本以强化安全性,以MariaDB为例,执行:
sudo mysql_secure_installation
该脚本会引导用户设置root密码、移除匿名用户、禁止root远程登录等操作,PostgreSQL的安全配置则需要修改pg_hba.conf文件,设置客户端认证方式,
sudo vi /var/lib/pgsql/data/pg_hba.conf
将ident认证修改为md5以支持密码验证,保存后重启PostgreSQL服务使配置生效。
创建数据库与用户
MariaDB创建数据库
登录MariaDB命令行:

mysql -u root -p
输入root密码后,执行以下SQL语句创建数据库:
CREATE DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
接着创建一个具有权限的数据库用户:
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword';
授予用户对数据库的完整权限:
GRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'localhost'; FLUSH PRIVILEGES;
PostgreSQL创建数据库
PostgreSQL默认使用postgres超级用户,可通过以下命令切换:
sudo -u postgres psql
在PostgreSQL命令行中创建数据库:
CREATE DATABASE mydatabase WITH ENCODING 'UTF8';
创建用户并授权:
CREATE USER myuser WITH PASSWORD 'mypassword'; GRANT ALL PRIVILEGES ON DATABASE mydatabase TO myuser;
数据库字符集与排序规则设置
创建数据库时,字符集和排序规则的设置至关重要,尤其是处理多语言数据时,MariaDB推荐使用utf8mb4字符集,它支持完整的Unicode字符,包括emoji表情。
CREATE DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
PostgreSQL默认使用UTF8编码,创建时可通过WITH ENCODING 'UTF8'明确指定,确保与应用需求一致。

验证数据库创建与权限
创建完成后,可通过以下命令验证数据库是否成功创建,在MariaDB中:
SHOW DATABASES;
在PostgreSQL中:
\l
切换到新数据库并测试用户权限:
USE mydatabase; -- MariaDB \c mydatabase -- PostgreSQL
执行简单查询或表操作,确认用户权限是否正确配置。
常见问题与注意事项
- 权限不足:创建数据库时若提示权限错误,需确保当前用户具有
CREATE权限(如root或postgres超级用户)。 - 字符集冲突:若应用与数据库字符集不匹配,可能导致乱码,建议统一使用UTF-8相关字符集。
- 防火墙设置:若需远程访问数据库,需开放对应端口(如MariaDB默认3306,PostgreSQL默认5432),并配置防火墙规则:
sudo firewall-cmd --permanent --add-port=3306/tcp sudo firewall-cmd --reload
相关问答FAQs
Q1:如何在CentOS上删除已创建的数据库?
A1:登录数据库管理系统后,执行DROP DATABASE mydatabase;命令(MariaDB)或DROP DATABASE mydatabase;(PostgreSQL),注意:此操作不可逆,将删除数据库及所有数据。
Q2:如何修改数据库的字符集?
A2:若数据库已存在且无数据,可直接删除重建;若有数据,需导出数据、重建数据库并重新导入,在MariaDB中使用:
mysqldump -u root -p old_database > backup.sql mysql -u root -p -e "CREATE DATABASE new_database CHARACTER SET utf8mb4;" mysql -u root -p new_database < backup.sql