Access denied for user 'mysql用户名'@'主机或IP' (using password: YES)'

本文介绍了解决MySQL权限问题的两种方法。第一种方法是从任意主机连接到MySQL服务器并授予所有权限,第二种方法是从特定主机连接并进行同样的操作。每种方法都详细说明了SQL语句的使用,并强调了刷新权限的重要性。

出现此错误的原因是mysql的权限没有放开。
Linux放开mysql权限的方法有如下两种:

第一种:使用mysql的用户名UserName从任意主机连接到Mysql服务器,并使用pwd作为密码

grant all privileges on . to ‘UserName’@’%’ identified by ‘pwd’ with grant option;

然后在刷新一下即可:

flush privileges;

第二种:使用mysql的用户名UserName从**特定主机(如:192.168.1.101)**连接到mysql服务器,并使用pwd作为密码

grant all privileges on . to ‘UserName’@‘192.168.1.101’ identified by ‘pwd’ with grant option;

然后在刷新:

flush privileges;

MySQL 连接时出现 `Access denied for user 'root'@'localhost' (using password: YES)` 错误,通常与密码验证、配置文件设置权限问题有关。以下是几种解决方法: ### 1. 使用 `skip-grant-tables` 忽略权限验证,重置密码 在某些情况下,即使密码正确,也可能由于权限问题导致无法登录。可以使用 `skip-grant-tables` 模式跳过权限验证,进入 MySQL 并修改密码。 #### 操作步骤: 1. 停止 MySQL 服务: ```bash net stop mysql ``` 2. 修改 `my.ini` 配置文件,在 `[mysqld]` 部分添加以下内容: ```ini skip-grant-tables ``` 3. 重新启动 MySQL 服务: ```bash net start mysql ``` 4. 使用无密码方式登录 MySQL: ```bash mysql -u root -p ``` 5. 进入 MySQL 后执行以下 SQL 语句,将 `root` 用户密码置空: ```sql use mysql; update user set authentication_string='' where user='root'; flush privileges; ``` 6. 设置新密码并更新加密规则: ```sql ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password' PASSWORD EXPIRE NEVER; ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost'; FLUSH PRIVILEGES; ``` 7. 删除 `my.ini` 文件中添加的 `skip-grant-tables` 配置,并重新启动 MySQL 服务。 ### 2. 使用 `mysqladmin` 修改密码 如果可以正常连接 MySQL,可以使用 `mysqladmin` 命令修改密码。该方法适用于已知当前密码的情况。 #### 示例: ```bash mysqladmin -u root -p password 'new_password' ``` 输入当前密码后即可更新密码。如果提示 `Access denied`,说明当前密码错误权限不足,需使用其他方法重置密码。 ### 3. 检查用户权限和连接权限 `Access denied` 错误也可能与用户权限配置有关。需要确保 `root` 用户具有从 `localhost` 连接的权限。 #### 检查并更新权限: 1. 登录 MySQL: ```bash mysql -u root -p ``` 2. 执行以下 SQL 语句,确保 `root` 用户具有连接权限: ```sql GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'new_password'; FLUSH PRIVILEGES; ``` ### 4. 检查端口占用情况 如果 MySQL 服务未能正常启动,可能是由于端口被占用导致的连接失败。可以使用以下命令检查端口占用情况: #### 检查 3306 端口是否被占用: ```bash netstat -ano | findstr :3306 ``` #### 查看占用端口的进程: ```bash tasklist | findstr <PID> ``` 如果发现其他进程占用了 3306 端口,可以结束该进程更改 MySQL 的端口配置。 ### 5. 重新安装 MySQL 如果上述方法均无效,可以尝试重新安装 MySQL,并在安装过程中确保正确配置 `my.ini` 文件和用户权限。 #### 重新安装步骤: 1. 卸载 MySQL 服务: ```bash mysqld --remove ``` 2. 删除 MySQL 安装目录和数据目录。 3. 重新下载并安装 MySQL,安装过程中确保配置 `my.ini` 文件并设置正确的用户权限。 4. 安装完成后,使用 `mysql -u root -p` 登录并设置密码。 ### 6. 检查防火墙设置 防火墙可能会阻止 MySQL 连接,导致 `Access denied` 错误。可以暂时关闭防火墙进行测试,确认是否为防火墙问题。 #### 关闭防火墙: 1. 打开“控制面板” -> “系统和安全” -> “Windows Defender 防火墙”。 2. 点击“启用关闭 Windows Defender 防火墙”。 3. 选择“关闭 Windows Defender 防火墙”。 ### 7. 检查 MySQL 服务状态 确保 MySQL 服务已启动,否则连接会失败。 #### 启动 MySQL 服务: ```bash net start mysql ``` #### 停止 MySQL 服务: ```bash net stop mysql ``` ### 8. 使用 Navicat 连接时的特殊处理 如果使用 Navicat 连接 MySQL 时出现 `Access denied` 错误,除了检查密码和权限外,还需要确保 Navicat 配置的连接参数正确。 #### 检查连接参数: - **主机名**:确保为 `localhost` `127.0.0.1`。 - **端口**:确保为 `3306`。 - **用户名**:确保为 `root`。 - **密码**:确保为正确密码。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值