如何让远程MySQL/MariaDB用户通过本地Linux同名用户认证?
实现远程MySQL/MariaDB用户通过同名本地Linux账号认证的方法
确实存在这种方案,MariaDB的auth_pam插件(MySQL官方也支持PAM认证插件)可以实现让远程MySQL用户直接通过同名本地Linux系统账号的密码完成身份验证,完全不需要同步维护两套密码。
具体配置步骤:
安装认证插件
根据你的发行版安装对应插件包:- Debian/Ubuntu(MariaDB):
sudo apt install mariadb-plugin-auth-pam - RHEL/CentOS(MariaDB):
sudo dnf install mariadb-server-auth-pam - MySQL官方版本:
多数发行版自带auth_pam插件,若缺失可通过官方源安装对应插件包。
- Debian/Ubuntu(MariaDB):
启用插件
编辑MySQL/MariaDB的主配置文件(比如/etc/my.cnf或/etc/mysql/mariadb.conf.d/50-server.cnf),在[mysqld]区块添加:plugin-load-add = auth_pam.so保存后重启数据库服务:
sudo systemctl restart mariadb # 或 mysql,取决于你的数据库类型创建关联的MySQL用户
登录数据库后执行创建用户命令,指定使用auth_pam插件并关联PAM服务名(这里用mysql作为服务名,对应后续的PAM配置文件):CREATE USER 'newuser'@'remotehost' IDENTIFIED WITH auth_pam AS 'mysql'; -- 根据实际需求给用户授权,示例为全权限 GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'remotehost'; FLUSH PRIVILEGES;配置PAM验证规则
创建或编辑/etc/pam.d/mysql文件,添加以下内容,让PAM调用系统本地用户验证模块:auth required pam_unix.so account required pam_unix.so调整权限(必要时)
确保MySQL进程有权限读取系统用户的密码哈希文件/etc/shadow,可将mysql用户加入shadow组:sudo usermod -aG shadow mysql之后重启数据库服务生效。
测试验证
从远程主机执行连接命令,输入Linux系统中newuser的密码即可登录:
mysql -u newuser -h 你的数据库主机IP -p
修改Linux用户newuser的密码后,再次用新密码连接MySQL即可验证同步效果。
内容的提问来源于stack exchange,提问作者tim
相关产品推荐
相关产品推荐

