如何通过CentOS SQLAdmin权限管理优化数据库安全与效率?
- 内容介绍
- 文章标签
- 相关推荐
使用者痛点:因为数据量爆发式增长,公司面临数据库安全漏洞频发、访问控制混乱、性能瓶颈等问题。说起来,CentOS作为主流Linux程序。其SQLAdmin权限管理成为保障主要数据资产安全与效率的关键环节。
一、安装并配置数据库服务器
痛点分析:新手常因配置错误导致服务无法启动或安全漏洞。
1.1 安装MySQL
sudo yum install mysql-server
sudo systemctl start mysqld
sudo systemctl enable mysqld
1.2 安装PostgreSQL
sudo yum install postgresql-server
sudo systemctl start postgresql
sudo systemctl enable postgresql
二、创建数据库和使用者
痛点分析:"超级管理员"泛滥、权限过度授予导致内部攻击风险。
2.1 MySQL创建方案
CREATE DATABASE mydatabase;CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword';GRANT SELECT,INSERT ON mydatabase.* TO 'myuser'@'localhost';FLUSH PRIVILEGES;
2.2 PostgreSQL创建方案
CREATE DATABASE mydatabase;
CREATE ROLE developer LOGIN PASSWORD 'devpass';GRANT CONNECT ON DATABASE mydatabase TO developer;说起来,GRANT USAGE ON SCHEMA public TO developer;老实说,GRANT SELECT ON ALL TABLES IN SCHEMA public TO developer;
三、配置防火墙
痛点分析:默认开放端口可能引发DDoS攻击或非法入侵。
# 仅允许内网IP段访问
sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp --add-source=192.168.0.0/16
sudo firewall-cmd --reload
# 开放公网时必须加密传输
SET GLOBAL require_secure_transport = ON;ALTER USER 'root'@'%' REQUIRE X509 SUBJECT '/CN=client/'
AND ISSUER '/CN=CA/' AND AFTER DATE 'YYYY-MM-DD HH:MI:SS';FLUSH PRIVILEGES;
# 仅允许内网IP段访问
sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp --add-source=192.168.0.0/16
sudo firewall-cmd --reload
# 开放公网时必须加密传输
SET GLOBAL require_secure_transport = ON;ALTER USER 'root'@'%' REQUIRE X509 SUBJECT '/CN=client/'
AND ISSUER '/CN=CA/' AND AFTER DATE 'YYYY-MM-DD HH:MI:SS';FLUSH PRIVILEGES;
# 修改pghba.conf文件添加: host all all 0.0.0.0/0 md5 encryptconnection=true
ssl = on sslcertfile = '/etc/pgsql/server.crt' sslkeyfile = '/etc/pgsql/server.key' sslcafile = '/etc/pgsql/root.crt'
sudo firewall-cmd --permanent --zone=public \ --add-port=5432/tcp \ --add-rich-rule='rule family="ipv4" source address="trustediprange" accept' sudo firewall-cmd --reload bash
audit2allow -M mysqlcustom -i /var/log/audit/audit.log | grep mysqldt
semodule -i mysql_custom pp
setsebool -P httpdcannetworkconnectdb on # 对Web应用的特殊授权 restorecon -Rv /var/lib/mysql # 恢复文件上下文标签
chcon -Rt mysqldbt /mnt/mysqldata/ mountoptions='nodev。nosuid,noexec,ro,userxattr,attrimmutable,selinux' echo "$mountoptions">> /etc/fstab
bash
。使用者痛点:因为数据量爆发式增长,公司面临数据库安全漏洞频发、访问控制混乱、性能瓶颈等问题。说起来,CentOS作为主流Linux程序。其SQLAdmin权限管理成为保障主要数据资产安全与效率的关键环节。
一、安装并配置数据库服务器
痛点分析:新手常因配置错误导致服务无法启动或安全漏洞。
1.1 安装MySQL
sudo yum install mysql-server
sudo systemctl start mysqld
sudo systemctl enable mysqld
1.2 安装PostgreSQL
sudo yum install postgresql-server
sudo systemctl start postgresql
sudo systemctl enable postgresql
二、创建数据库和使用者
痛点分析:"超级管理员"泛滥、权限过度授予导致内部攻击风险。
2.1 MySQL创建方案
CREATE DATABASE mydatabase;CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword';GRANT SELECT,INSERT ON mydatabase.* TO 'myuser'@'localhost';FLUSH PRIVILEGES;
2.2 PostgreSQL创建方案
CREATE DATABASE mydatabase;
CREATE ROLE developer LOGIN PASSWORD 'devpass';GRANT CONNECT ON DATABASE mydatabase TO developer;说起来,GRANT USAGE ON SCHEMA public TO developer;老实说,GRANT SELECT ON ALL TABLES IN SCHEMA public TO developer;
三、配置防火墙
痛点分析:默认开放端口可能引发DDoS攻击或非法入侵。
# 仅允许内网IP段访问
sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp --add-source=192.168.0.0/16
sudo firewall-cmd --reload
# 开放公网时必须加密传输
SET GLOBAL require_secure_transport = ON;ALTER USER 'root'@'%' REQUIRE X509 SUBJECT '/CN=client/'
AND ISSUER '/CN=CA/' AND AFTER DATE 'YYYY-MM-DD HH:MI:SS';FLUSH PRIVILEGES;
# 仅允许内网IP段访问
sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp --add-source=192.168.0.0/16
sudo firewall-cmd --reload
# 开放公网时必须加密传输
SET GLOBAL require_secure_transport = ON;ALTER USER 'root'@'%' REQUIRE X509 SUBJECT '/CN=client/'
AND ISSUER '/CN=CA/' AND AFTER DATE 'YYYY-MM-DD HH:MI:SS';FLUSH PRIVILEGES;
# 修改pghba.conf文件添加: host all all 0.0.0.0/0 md5 encryptconnection=true
ssl = on sslcertfile = '/etc/pgsql/server.crt' sslkeyfile = '/etc/pgsql/server.key' sslcafile = '/etc/pgsql/root.crt'
sudo firewall-cmd --permanent --zone=public \ --add-port=5432/tcp \ --add-rich-rule='rule family="ipv4" source address="trustediprange" accept' sudo firewall-cmd --reload bash
audit2allow -M mysqlcustom -i /var/log/audit/audit.log | grep mysqldt
semodule -i mysql_custom pp
setsebool -P httpdcannetworkconnectdb on # 对Web应用的特殊授权 restorecon -Rv /var/lib/mysql # 恢复文件上下文标签
chcon -Rt mysqldbt /mnt/mysqldata/ mountoptions='nodev。nosuid,noexec,ro,userxattr,attrimmutable,selinux' echo "$mountoptions">> /etc/fstab
bash
。
