Mysql 中的預設使用者帳戶
我是 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@localhost
andmysql.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
祝你好運!