【问题标题】:1045 when connecting to MySQL server连接 MySQL 服务器时出现 1045
【发布时间】:2016-12-29 08:47:03
【问题描述】:

错误是1045。但是我的用户名和密码是正确的。

我以 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    |
 +--------+-----------+

当我使用收到的root 帐户登录 phpMyAdmin 时

#1045 - 用户 'root'@'localhost' 的访问被拒绝(使用密码:YES)

但我的帐户 dba 可以正常登录。怎么回事?

另外我想我应该注意 MySQL 实例位于具有 2 个 NIC 并位于 2 个(内部)网络上的服务器上。一个是本地域192.168.0/24,另一个是更大的域10.228./16

我可以通过10.228./16 网络的fcapdi 帐户登录。但不是来自192.168.0./24 网络。

【问题讨论】:

  • 确定你有多少根用户。将他们所有的密码重置为相同的东西
  • select user,host,password from mysql.userselect user,host,authentication_string from mysql.user ... 关注哈希
  • 好的,快速提问。当我有多个 root 用户在同一台​​主机上时,如何更改他们的密码?我目前有root@localhostroot@127.0.1.7root@::1root@tester,但后来我有一个root@localhost, tester, 127.0.0.1

标签: mysql mariadb


【解决方案1】:

执行:

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

作为在服务器上具有 GRANT 权限的用户并尝试连接。

【讨论】:

  • 看来他想要%
  • 如果 %,它允许来自您连接的任何 IP。这是为了安全指定特定的 IP 地址。
  • 我需要从多个主机连接到这个数据库。 fcapdi 是一个仅插入帐户。它将在数十个工作站上。 % 符号也应该允许多个 IP 地址正确吗?此外,这并不能解释为什么root@localhost 会被拒绝登录。
  • 好的。如果您愿意,可以根据需要为任何 IP 指定“192.168.0.%”或“192.168.%”或 %,从而限制子网中的 IP。
  • 但是当我允许从% 登录时,这如何解决远程登录被拒绝的潜在问题?另外这如何解决root@localhost无法登录的问题?
【解决方案2】:
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';

【讨论】:

    猜你喜欢
    • 2020-07-25
    • 2014-10-29
    • 1970-01-01
    • 2017-12-16
    • 2017-02-07
    • 1970-01-01
    • 2012-06-25
    • 2020-01-22
    • 1970-01-01
    相关资源
    最近更新 更多