Mysql

Mysql 中的預設使用者帳戶

  • February 15, 2018

我是 MySQL 新手,在 Ubuntu 16.04 中安裝了 MySQL。在安裝時,我已經給了 root 密碼。

在終端中,我只能訪問 root 使用者和只創建使用者。

bharath@bharath-desktop:~$ mysql -uroot -pbharath

mysql:

$$ Warning $$在命令行界面上使用密碼可能不安全。歡迎使用 MySQL 監視器。命令以 ; 結尾 或\g。您的 MySQL 連接 ID 為 7 伺服器版本:5.7.16-0ubuntu0.16.04.1 (Ubuntu) 版權所有 (c) 2000, 2016,Oracle 和/或其附屬公司。版權所有。

Oracle 是 Oracle Corporation 和/或其附屬公司的註冊商標。其他名稱可能是其各自所有者的商標。

輸入“幫助”;或 ‘\h’ 尋求幫助。鍵入 ‘\c’ 以清除目前輸入語句。

mysql>

但我無法訪問終端中的預設 MySQL 使用者。它顯示如下:

bharath@bharath-desktop:~$ mysql

錯誤 1045 (28000):拒絕使用者 ‘bharath’@’localhost’ 的訪問(使用密碼:否)**

如果我在 MySQL 之後按 Enter,則它沒有經過身份驗證。如何訪問這個?

據我所知,新的 mysql 伺服器的預設使用者是root@localhostand mysql.sys@localhost,您需要創建一個bharath@localhost使用者並在您的文件夾下創建一個 .my.cnf ,$HOME其中包含以下內容:

[mysql]
user=bharath
password=<yourpreferredpassword>
host=localhost

如果有一個名為的預設 MySQL 使用者mysql,那麼您將使用以下命令啟動 MySQL 提示符:

shell> mysql -umysql

如果 mysql 使用者沒有密碼,這將授予您訪問權限。否則,您可以指定 -p 參數並提示輸入密碼:

shell> mysql -umysql -p

但是,根據預設文件3.4 保護初始 MySQL 帳戶,有root使用者或匿名帳戶''(空白/空)。

mysql.user 授權表定義了初始 MySQL 使用者帳戶及其訪問權限。目前版本的 MySQL 5.7 僅創建一個 ‘root’@’localhost’ 帳戶,但對於早期版本,可能有多個帳戶,如下所述:

某些帳戶具有使用者名 root。這些是擁有所有特權並且可以做任何事情的超級使用者帳戶。如果這些 root 帳戶的密碼為空,則任何人都可以在沒有密碼的情況下以 root 身份連接到 MySQL 伺服器並被授予所有權限。

◾ 在Windows上,創建的root帳戶只允許來自本地主機的連接。可以通過指定主機名 localhost、IP 地址 127.0.0.1 或 IPv6 地址 ::1 來建立連接。如果使用者在安裝過程中選擇了從遠端機器啟用 root 訪問選項,Windows 安裝程序將創建另一個 root 帳戶以允許來自任何主機的連接。

◾ 在Unix上,每個root 帳戶都允許來自本地主機的連接。可以通過指定主機名 localhost、IP 地址 127.0.0.1、IPv6 地址 ::1 或實際主機名或 IP 地址來建立連接。

◾ ‘root’@’localhost’ 帳戶在 mysql.proxies_priv 表中也有一行,它允許授予 ‘’@’’ 的 PROXY 權限,即所有使用者和所有主機。這使 root 可以設置代理使用者,以及將設置代理使用者的權限委託給其他帳戶。請參見第 5.9 節“代理使用者”。

• 如果為匿名使用者創建了帳戶,則這些帳戶的使用者名為空。匿名帳戶沒有密碼,因此任何人都可以使用它們連接到 MySQL 伺服器。

◾ 在 Windows 上,有一個匿名帳戶允許來自本地主機的連接。可以通過指定主機名 localhost 進行連接。

◾ 在 Unix 上,每個匿名帳戶都允許來自本地主機的連接。可以通過為其中一個帳戶指定主機名 localhost 或為另一個帳戶指定實際主機名或 IP 地址來建立連接。

您可以在連接到您的 root 帳戶後,在您的 MySQL 實例上執行以下語句來驗證該帳戶:

5.7.6 之前的版本:

SELECT User, Host, Password FROM mysql.user;

5.7.6 及更高版本:

SELECT User, Host, HEX(authentication_string) FROM mysql.user;

將顯示下表:

+------+--------------------+----------+
| User | Host               | Password |
+------+--------------------+----------+
| root | localhost          |          |
| root | myhost.example.com |          |
| root | 127.0.0.1          |          |
| root | ::1                |          |
|      | localhost          |          |
|      | myhost.example.com |          |
+------+--------------------+----------+

root在您的範例中,可能有甚至可能是匿名''(空白)的密碼條目。

如果要更改匿名密碼,請執行以下命令:

mysql> SET PASSWORD FOR ''@'localhost' = PASSWORD('new_password');

並且可能:

mysql> SET PASSWORD FOR ''@'myhost.example.com' = PASSWORD('new_password');

然後,您應該能夠像這樣連接到 localhost:

shell> mysql -h localhost -pnewpassword

祝你好運!

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