2016-08-22 62 views
1

錯誤是1045.但我的用戶名和密碼是正確的。1045連接到MySQL服務器時

我連接爲fcapdi從192.168.0.18(至192.168.0.240:3306)

我的用戶表

MariaDB [(none)]> SELECT User,Host FROM mysql.user; 
+--------+-----------+ 
| User | Host  | 
+--------+-----------+ 
| dba | %   | 
| fcapdi | %   | 
| root | 127.0.0.1 | 
| root | ::1  | 
|  | localhost | 
| root | localhost | 
|  | tester | 
| root | tester | 
+--------+-----------+ 

當我登錄與phpMyAdmin與root帳戶我收到

#1045 - 拒絕用戶'root'@'localhost'的訪問(使用密碼:YES)

但我的帳戶dba可以正常登錄。到底是怎麼回事?

另外我想我應該注意到MySQL實例坐在一個有2個NIC並位於2(內部)網絡的服務器上。一個是本地域192.168.0/24另一個是較大域10.228./16

我可以通過10.228./16網絡的fcapdi帳戶登錄。但不是來自192.168.0./24網絡。

+0

確定你有多少根用戶擁有。將所有密碼重置爲相同的東西 – Drew

+0

'從mysql.user'選擇用戶,主機,密碼或'從mysql.user'選擇用戶,主機,身份驗證字符串......眼球哈希 – Drew

+0

好的快速問題。當我有多個在同一主機上的root用戶時,如何更改他們的密碼?我目前有'root @ localhost','root @ 127.0.1.7','root @ :: 1'和'root @ tester',但是我有一個'root @ localhost,tester,127.0.0.1' – Valarauca

回答

1

執行:

GRANT ALL ON 
    your_database_schema_name.* to 
    'fcapdi'@'192.168.0.18' IDENTIFIED BY 'your_connection_password'; 

與服務器上的GRANT權限的用戶,並嘗試連接。

+0

看起來好像他希望% – Drew

+0

如果%,它允許從您連接的任何IP。這是爲了安全來指定特定的IP地址。 –

+0

我需要從多個主機連接到此數據庫。 fcapdi是一個僅插入帳戶。它會在幾十個工作站上。另外''''符號應該允許多個IP地址正確?此外,這並不能解釋爲什麼'root @ localhost'會被拒絕登錄。 – Valarauca

1
As an aside question under comments 

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newPass123^'); 
SET PASSWORD FOR 'root'@'127.0.0.1' = PASSWORD('newPass123^'); 
SET PASSWORD FOR 'root'@'etc_etc' = PASSWORD('newPass123^'); 

you can also do it in a single update statement but it depends on your mysql version 

create user 'joe1'@'localhost' identified by 'blah'; 
create user 'joe1'@'127.0.0.1' identified by 'afadfafsdblah2'; 
create user 'joe1'@'%' identified by 'djdjdjjdjdd';; 


select user,host,password from mysql.user where user='joe1'; 
+------+-----------+-------------------------------------------+ 
| user | host  | password         | 
+------+-----------+-------------------------------------------+ 
| joe1 | localhost | *0380BEA27363E56C37F0BFDA438F429080848051 | 
| joe1 | %   | *7BEAF25E9BDFBDEF5A9B9E4A37023721B668FA51 | 
| joe1 | 127.0.0.1 | *5CD978E569B31B1558E5C1D0972E6E02516893BF | 
+------+-----------+-------------------------------------------+ 

update mysql.user set password=PASSWORD('nEW_COMMon_password762') where user='joe1'; 
-- 3 rows updated 

select user,host,password from mysql.user where user='joe1'; 
+------+-----------+-------------------------------------------+ 
| user | host  | password         | 
+------+-----------+-------------------------------------------+ 
| joe1 | localhost | *A248B352CE5BF750A11AA9BA253B5F191C721D1A | 
| joe1 | %   | *A248B352CE5BF750A11AA9BA253B5F191C721D1A | 
| joe1 | 127.0.0.1 | *A248B352CE5BF750A11AA9BA253B5F191C721D1A | 
+------+-----------+-------------------------------------------+ 

對於MySQL 5.7是不是名爲password列。相反,這樣做對authentication_string

清理:

drop user 'joe1'@'%'; 
drop user 'joe1'@'127.0.0.1'; 
drop user 'joe1'@'localhost';