Mysql

在 MySQL 配置文件中為帳戶指定無密碼

  • June 26, 2021

這是一個理論上的問題,因為擁有一個沒有密碼的數據庫帳戶是一個糟糕的主意。


**問題:**有沒有辦法在 MySQL 配置文件中指定一個沒有密碼的帳戶?

從技術上講,是的。但是,如果目標是擁有一個用於某些任務的帳戶,您可以使用正確的密碼創建一個帳戶,然後將一個名為的文件.my.cnf放在將使用 MySQL 帳戶的使用者的主目錄中。

.my.cnf文件看起來像這樣:

[mysql]
user=sandeep
password=superSecretPassword!123
[mysqladmin]
user=sandeep
password=superSecretPassword!123

這比創建沒有密碼的使用者要好一些。

你要問的是深入到一個角落裡,以至於你即將消失在裂縫中。

嘗試#1

使用無登錄可插入身份驗證

嘗試#2:非常不安全

創建一個mysql使用者

CREATE USER 'cornercaseuser'@'%'
IDENTIFIED WITH mysql_native_password
BY 'cornercasepassword';
GRANT .... TO 'cornercaseuser'@'%';

將這些行粘貼在/etc/my.cnf自身中(是的 mysqld 的配置文件)

[mysql]
password='cornercasepassword'

然後就可以這樣登錄了

mysql -ucornercaseuser

我見過客戶這樣做。非常危險 !!!

嘗試#3

使用套接字身份驗證。安裝時,root@localhost配置為無需密碼即可登錄。只需創建一個喜歡它的使用者。

例如,在 MariaDB 中,當你創建一個使用者時,你仍然必須給它一個密碼。但是,您必須將使用者聲明為同時使用這兩種協議。這是在文件中

CREATE USER root@localhost IDENTIFIED VIA unix_socket OR mysql_native_password USING 'invalid'
CREATE USER mysql@localhost IDENTIFIED VIA unix_socket OR mysql_native_password USING 'invalid'

為什麼這樣的使用者必須同時擁有這兩種協議?

如果在 mysqld 已經執行的情況下啟動 mysqld,pid 文件就會消失。這可能會或可能不會影響套接字文件。如果是這樣,root@localhost則不能再登錄檢查套接字文件。

此時,您必須使用密碼和 TCP/IP 進行連接

mysql -h127.0.0.1 -uroot -p --protocol=tcp -P3306

引用自:https://dba.stackexchange.com/questions/294844