Ubuntu 上 sqladmin 用户认证方式
一、概念澄清
- 在 Ubuntu 语境中,sqladmin 通常指 phpMyAdmin(Web 方式的 MySQL/MariaDB 管理工具),也可能是某些第三方监控工具的包名。其“用户认证”包含两层:
- Web 层的访问控制(谁来登录 phpMyAdmin)
- 数据库层的账户认证(phpMyAdmin 用哪个数据库账号连 MySQL/MariaDB)
二、Web 层认证方式(以 phpMyAdmin 为例)
- 基本认证(最常见)
- 通过 Web 服务器的 HTTP 基本认证(如 Apache 的 htpasswd)保护 phpMyAdmin 目录;登录提示输入用户名/密码,凭证与数据库账户无关。
- 基于表单的登录(内置)
- phpMyAdmin 提供表单登录界面,使用你在 MySQL/MariaDB 中创建的数据库账户进行认证;登录成功后以该账户的权限操作。
- 多用户与访问控制
- 可创建多个数据库用户并授予不同权限,然后在 phpMyAdmin 中分别用这些账户登录;也可结合 Web 服务器层面的访问控制实现更细粒度的入口限制。
三、数据库层认证方式(MySQL/MariaDB 账户)
- 常用插件与特点
- caching_sha2_password:MySQL 8.0+ 的默认插件,安全性高;但部分旧版 PHP/客户端驱动可能存在兼容性问题。
- mysql_native_password:传统插件,兼容性最好,适合与旧客户端/旧 PHP 搭配。
- auth_socket(Unix 套接字):本地通过 sudo mysql 免密登录,安全性高但不支持远程;适合本机运维账户。
- 切换与创建示例
- 创建使用密码的账户(便于 phpMyAdmin 远程/表单登录):
- CREATE USER ‘webadmin’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘StrongPass!’;
- GRANT ALL PRIVILEGES ON dbname.* TO ‘webadmin’@‘localhost’;
- FLUSH PRIVILEGES;
- 将 root 从 socket 切换为密码(如需密码登录 CLI):
- ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘StrongRootPass!’;
- 将 root 改回 socket(如需保留 sudo mysql 免密本地登录):
- ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH auth_socket;
- 远程访问提示
- 若 phpMyAdmin 与数据库不在同一主机,需确保数据库账户的主机为 ‘%’ 或具体来源网段,并开放 3306/tcp 防火墙端口(如使用 UFW:sudo ufw allow 3306/tcp)。
四、若指的是 Microsoft SQL Server on Ubuntu
- 支持 Active Directory 集成认证(Kerberos):将 Ubuntu 上的 SQL Server 主机加入 AD 域,为服务创建 AD 账户与 SPN,配置 keytab,在 SQL Server 中创建基于 AD 的登录名,客户端可用域凭据无密码连接。
五、安全加固要点
- 为 phpMyAdmin 启用 HTTPS(TLS),避免口令明文传输。
- 仅允许必要来源 IP 访问 3306/tcp 与 Web 端口(如 80/443),并使用 UFW 等防火墙限制访问。
- 禁用数据库 root 的远程登录,日常使用最小权限的专用账户;结合 Fail2Ban 降低暴力破解风险。