在 Ubuntu 上给 SQLAdmin(通常指 MySQL / MariaDB 的管理员账户或 phpMyAdmin / Adminer 等工具)开启 SSL,一般分 数据库服务端 SSL 和 客户端/管理工具使用 SSL 两部分。下面以 MySQL / MariaDB 为主说明(最常见场景)。
mysql -u root -p -e "SHOW VARIABLES LIKE 'have_ssl';"
YES:已支持DISABLED:支持但未启用NO:不支持(需升级)sudo mkdir -p /etc/mysql/ssl
cd /etc/mysql/ssl
openssl genrsa 2048 > ca-key.pem
openssl req -new -x509 -nodes -days 3650 -key ca-key.pem -out ca-cert.pem
openssl req -newkey rsa:2048 -days 3650 -nodes -keyout server-key.pem -out server-req.pem
openssl rsa -in server-key.pem -out server-key.pem
openssl x509 -req -in server-req.pem -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem
openssl req -newkey rsa:2048 -days 3650 -nodes -keyout client-key.pem -out client-req.pem
openssl rsa -in client-key.pem -out client-key.pem
openssl x509 -req -in client-req.pem -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem
编辑配置文件:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
添加或修改:
[mysqld]
ssl-ca=/etc/mysql/ssl/ca-cert.pem
ssl-cert=/etc/mysql/ssl/server-cert.pem
ssl-key=/etc/mysql/ssl/server-key.pem
重启 MySQL:
sudo systemctl restart mysql
mysql -u root -p -e "\s"
应看到:
SSL: Cipher in use is ...
ALTER USER 'sqladmin'@'%' REQUIRE SSL;
FLUSH PRIVILEGES;
或更强限制:
REQUIRE X509; -- 需要客户端证书
REQUIRE CIPHER 'AES256';
mysql --ssl-mode=REQUIRED -u sqladmin -p
指定证书:
mysql \
--ssl-ca=/etc/mysql/ssl/ca-cert.pem \
--ssl-cert=/etc/mysql/ssl/client-cert.pem \
--ssl-key=/etc/mysql/ssl/client-key.pem \
-u sqladmin -p
编辑:
sudo nano /etc/phpmyadmin/config.inc.php
添加:
$cfg['Servers'][$i]['ssl'] = true;
如需证书:
$cfg['Servers'][$i]['ssl_ca'] = '/etc/mysql/ssl/ca-cert.pem';
$cfg['Servers'][$i]['ssl_cert'] = '/etc/mysql/ssl/client-cert.pem';
$cfg['Servers'][$i]['ssl_key'] = '/etc/mysql/ssl/client-key.pem';
在登录页面:
ssl://localhost
SSL connection errorsudo chown mysql:mysql /etc/mysql/ssl/*
ssl = true如果你指的是 SQLAdmin(某个具体软件) 或 PostgreSQL / SQL Server,告诉我具体名称,我可以给你更精确的配置步骤。