mysql中Access denied(using password:NO)问题解决

我使用mysql启动命令启动了mysql后发现了下面错误
在这里插入图片描述
这个错误是因为前期我没有对数据库设置密码,这里进入mysql报了错误。经过网上查找,下面的步骤成功解决了我的问题。

  1. 在安装mysql的文件夹下找到my.int这个配置文件。打开添加skip-grant-tables。
    这句话的意思是跳过验证。
  2. 保存后使用下面命令重启mysql服务,如果已经启动需要先使用net stop mysql停止服务。重新启动。
net start mysql
  1. 进入mysql文件夹中,我们可以看到bin这个文件夹。在这里运行如下命令。
mysql -u root -p

在这里插入图片描述
4. 对于弹出的enter password可以直接回车跳过,从而进入mysql命令行。
5. 使用如下命令修改密码

use mysql;
update mysql.user set authentication_string=password('root') where user='root' ;

在这里插入图片描述

6.接着退出,并把my.ini文件中添加的那一项去掉。并重启数据库。
7.输入mysql -u root -p,然后输入密码。成功进入mysql
在这里插入图片描述

### MySQL 登录权限拒绝问题分析与解决方案 当遇到 `Access denied for user 'gjx'@'localhost' (using password: NO)` 错误时,通常表示用户尝试以无密码方式登录到数据库实例失败。以下是该错误的常见原因及其对应的解决方案。 #### 原因一:用户名或主机名不匹配 如果用户的定义中未明确允许 `'gjx'` 用户从 `'localhost'` 进行访问,则会出现此错误[^1]。可以通过检查用户表中的记录来确认是否存在对应关系。 ```sql SELECT host, user FROM mysql.user WHERE user='gjx'; ``` 如果没有找到相关条目或者发现 `host` 字段不是 `'%'` 或者 `'localhost'`,则需要创建新的用户并赋予适当权限: ```sql CREATE USER 'gjx'@'localhost' IDENTIFIED BY ''; GRANT ALL PRIVILEGES ON *.* TO 'gjx'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES; ``` #### 原因二:密码设置问题 即使指定了 `(using password: NO)` 参数,某些情况下仍需提供有效的认证凭证才能成功接入服务器。因此建议重新设定目标账号的默认密钥为空字符串或其他安全值后再测试一次连接情况[^4]: ```bash # Windows环境下的命令序列用于重设ROOT级管理员口令以便进一步操作其他普通成员账户 net stop mysql mysqld --skip-grant-tables & mysql -u root ALTER USER 'gjx'@'localhost' IDENTIFIED WITH mysql_native_password BY ''; exit; net start mysql ``` 完成上述步骤后再次执行客户端程序调用应该可以正常工作了。 #### 注意事项 对于生产环境中部署的服务端应用而言,请务必遵循最小化授权原则仅授予必要的读写许可给各业务逻辑单元所使用的专属ID号;同时定期审查现有配置文件内的安全性参数防止潜在风险发生。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值