ERROR 1045 (28000): Access denied 解决方案

本文提供了一种解决安装MySQL 5.7.20后遇到的登录权限问题的方法,包括配置my.ini文件以实现免密登录、设置密码及刷新权限等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装完版本mysql-5.7.20-winx64  在安装完毕,运行时报如下错误:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) 或则

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 


我的解决方案是:

1、在my.ini文件中添加:

   skip-grant-tables   添加这句话可以免密登录

 [mysql]
   # 设置mysql客户端默认字符集
   default-character-set=utf8 
  [mysqld]
  #设置3306端口
         skip-grant-tables
         port = 3306 
 # 设置mysql的安装目录
         basedir=E:\\mysql-5.7.20-winx64
   # 设置mysql数据库的数据的存放目录
         datadir=E:\\mysql-5.7.20-winx64\\data
  # 允许最大连接数
         max_connections=200
 # 服务端使用的字符集默认为UTF8
         character-set-server=utf8
   # 创建新表时将使用的默认存储引擎
   default-storage-engine=INNODB

2、添加完毕记得mysql处于关闭状态:net stop mysql


3、然后删除data目录下的文件

4、然后执行命令:

mysqld --initialize

5、再次启动mysql    

   net start mysql

6、然后登录系统

   mysql -h127.0.0.1  -u root -p   直接enter进入系统。

7、登录后自己设置密码

set password =password('你的密码');  //设置密码
flush privileges; //刷新权限

高版本替换为update mysql.user set authentication_string=password('root') where user='root' ;即可

8、其他权限(如果需要用)

mysql> grant all on *.* to 'root'@'localhost' IDENTIFIED BY '你的密码'with grant option ;
mysql> flush privileges;
3.进入mysql库修改user表
mysql> use mysql;
mysql> update user set password=password('你的密码') where user='root'; 
mysql> flush privileges;
mysql> grant all on *.* to 'root'@'192.168.0.163' IDENTIFIED BY 'root' with grant option ;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql>
mysql>
mysql>  alter user 'root'@'localhost' identified by 'root';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> grant all on *.* to 'root'@'localhost' IDENTIFIED BY 'root' with grant option ;
Query OK, 0 rows affected, 1 warning (0.00 sec)


mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)


mysql> grant all on *.* to 'root'@'192.168.0.163' IDENTIFIED BY 'root' with grant option ;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)


GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION; 
alter user 'root'@'%' identified by 'root';  

查看是否存在锁表情况:

 show OPEN TABLES where In_use > 0


查询进程:

show processlist


### MySQL 错误 1045 (28000)解决方案 MySQL 错误 1045 表示用户访问被拒绝,通常是因为用户名、密码或权限设置不正确。以下是可能导致此问题的原因及解决方法: #### 1. 用户名或密码错误 最常见的原因是提供的用户名或密码与数据库中存储的凭据不匹配。检查连接字符串中的用户名和密码是否正确[^1]。 #### 2. 主机名限制 MySQL 用户不仅依赖于用户名和密码,还依赖于主机名进行身份验证。如果用户的定义仅限于特定的主机(例如 `localhost` 或某个 IP 地址),则从其他主机尝试连接时会失败。可以使用以下命令检查用户权限: ```sql SELECT Host, User FROM mysql.user; ``` 如果需要允许从任何主机连接,可以创建一个通配符用户(如 `'user'@'%'`)并授予相应的权限[^2]。 #### 3. 权限不足 即使用户名和密码正确,也可能因为权限不足导致访问被拒绝。可以通过以下命令为用户授予权限: ```sql GRANT ALL PRIVILEGES ON *.* TO 'username'@'host' IDENTIFIED BY 'password' WITH GRANT OPTION; FLUSH PRIVILEGES; ``` 确保将 `username`、`host` 和 `password` 替换为实际值[^3]。 #### 4. 密码过期或策略限制 如果启用了密码过期策略,可能会导致访问被拒绝。可以通过以下命令检查和修改密码策略: ```sql SHOW VARIABLES LIKE 'default_password_lifetime'; SET GLOBAL default_password_lifetime = 0; ``` 此外,如果密码不符合复杂性要求,也可以导致登录失败。检查并调整密码策略以适应需求[^4]。 #### 5. 配置文件中的错误 有时,MySQL 客户端可能会从配置文件(如 `my.cnf` 或 `.my.cnf`)中读取错误的凭据。检查这些文件以确保没有冲突的设置[^5]。 #### 6. 网络问题 如果从远程主机连接到 MySQL 服务器,确保防火墙规则允许 MySQL 端口(默认为 3306)的流量。此外,确认 MySQL 服务已配置为监听外部连接: ```bash sudo netstat -tuln | grep 3306 ``` 如果未监听外部地址,可以在配置文件中将 `bind-address` 设置为 `0.0.0.0` 并重启服务[^6]。 ### 示例代码:重置用户密码 如果忘记密码,可以通过以下步骤重置: 1. 停止 MySQL 服务。 2. 使用 `--skip-grant-tables` 参数启动 MySQL。 3. 登录 MySQL 并执行以下命令: ```sql USE mysql; UPDATE user SET authentication_string=PASSWORD('new_password') WHERE User='root'; FLUSH PRIVILEGES; ``` 4. 重新启动 MySQL 服务以应用更改[^7]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值