pow*_*ete 4 mysql authentication mariadb
我在Ubuntu 16.04上的MariaDB上有一个root用户.
默认情况下,root用户由unix_socket身份验证插件进行身份验证.
我可以通过设置将身份验证方法切换为密码方法
update mysql.user set plugin='' where user='root';
Run Code Online (Sandbox Code Playgroud)
这很好用.但......
是否有可能通过unix_socket(root shell)或密码(当它由localhost:3306连接时)验证root用户?
MariaDb/MySQL 认为 'localhost' 与 '127.0.0.1' 不同,因此您可以为 TCP 设置密码,而为 Unix 套接字设置密码,如下所示:
玛丽亚数据库:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY 'xxx' WITH GRANT OPTION;
INSTALL SONAME 'auth_socket';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED VIA unix_socket WITH GRANT OPTION;
Run Code Online (Sandbox Code Playgroud)
MySQL/Percona:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY 'xxx' WITH GRANT OPTION;
INSTALL PLUGIN auth_socket SONAME 'auth_socket.so';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED WITH auth_socket WITH GRANT OPTION;
Run Code Online (Sandbox Code Playgroud)
是的 \xe2\x80\x94 从 MariaDB 10.4(2019 年 6 月发布*)开始,您可以使用OR关键字IDENTIFIED VIA来允许多种身份验证方法中的任意一种:
ALTER USER `minecraft` \n IDENTIFIED VIA unix_socket \n OR mysql_native_password USING PASSWORD("Type me over TCP, or from other accts");\nRun Code Online (Sandbox Code Playgroud)\nhttps://mariadb.com/kb/en/pluggable-authentication-overview/#extended-sql-syntax
\n*尽管操作系统供应商可能进展缓慢,甚至完全拒绝提供更新,MariaDB 仍提供了一个官方存储库,至少为 Ubuntu 14.04、CentOS 和 RHEL 6、Debian 7 等旧发行版提供此版本的服务Fedora 28(以及每个版本的最新版本),但对于其中一些(例如 Fedora < 32),您可能必须手动修改 URL 中的版本。
\n一种可靠而直接的方法是创建另一个超级用户,并在想要通过密码连接时使用它.
CREATE USER admin@localhost IDENTIFIED BY 'password';
GRANT ALL ON *.* TO admin@localhost WITH GRANT OPTION;
-- etc
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11095 次 |
| 最近记录: |