MySQL拒绝访问问题

运行Sqoop时出现:

java.sql.SQLException: Access denied for user 'root'@'hadoop-master' (using password: YES)

使用对应的hadoop-master对应的IP登录,失败。直接赋予%权限,问题依旧

grant all privileges on *.* to root@'%' identified by '123456' with grant option;
flush privileges;

原因:

MySQL会先判断授权的IP是否配置映射,有多条权限记录时,如果其中某些记录配置了 IP host 映射,可能会产生不能访问

 

解决办法:

1. 给对应host授权

# 检查数据库中root是否绑定host为hadoop-master
select user,host from mysql.user where user = 'root';

# 如果没有的话赋予对应权限
grant all privileges on *.* to root@'hadoop-master' identified by '123456' with grant option;
flush privileges;

2. 只保留host为%

#修改user表,把Host表内容修改为%
update user set host='%' where host='localhost';

#删除root用户的其他host
delete from user where Host='hadoop-master';
delete from user where Host='127.0.0.1';
del
### MySQL启动时拒绝访问的解决方案及错误原因分析 #### 错误原因分析 MySQL启动时出现“拒绝访问问题,通常与以下几种情况相关: - 权限不足:当前用户可能没有足够的权限来启动MySQL服务[^3]。 - 服务未正确安装或配置:MySQL服务可能未正确注册到系统服务中[^1]。 - 密码错误:如果尝试连接数据库时输入了错误的密码,也可能导致类似问题[^1]。 #### 解决方案 以下是针对上述问题的具体解决方法: 1. **检查MySQL服务状态** 首先确认MySQL服务是否正在运行。可以使用以下命令检查服务状态: ```bash sudo service mysql status ``` 如果服务未运行,可以通过以下命令启动服务: ```bash sudo service mysql start ``` 2. **以管理员权限启动服务** 如果在Windows环境下遇到“拒绝访问问题,可能是因为当前用户权限不足。可以通过以下方式解决: - 使用管理员权限打开命令提示符(CMD)。 - 然后尝试重新启动MySQL服务: ```bash net start mysql80 ``` 如果仍然失败,可能是MySQL服务未正确注册到系统服务中,需要手动注册服务。 3. **重新注册MySQL服务** 如果MySQL服务未正确安装或损坏,可以尝试重新注册服务: - 停止现有服务(如果存在): ```bash net stop mysql80 ``` - 注销现有服务(如果存在): ```bash "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld" --remove mysql80 ``` - 注册新服务: ```bash "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld" --install mysql80 ``` - 启动服务: ```bash net start mysql80 ``` 4. **检查密码和用户权限** 如果问题是由密码错误或用户权限不足引起的,可以通过以下步骤解决: - 登录MySQL服务器并重置密码: ```bash mysql -u root -p ``` - 在MySQL shell中执行以下命令重置密码: ```sql ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; FLUSH PRIVILEGES; ``` 5. **检查防火墙和端口冲突** 如果MySQL服务无法正常启动,还可能是由于防火墙阻止了MySQL的端口(默认为3306)。可以尝试关闭防火墙或添加例外规则: ```bash sudo ufw allow 3306/tcp ``` #### 总结 通过以上方法,可以有效解决MySQL启动时的“拒绝访问问题。主要涉及权限不足、服务未正确安装、密码错误等常见原因[^1]。 ```python # 示例代码:Python连接MySQL数据库 import mysql.connector try: connection = mysql.connector.connect( host='localhost', user='root', password='new_password', database='mysql' ) if connection.is_connected(): print("成功连接到MySQL数据库") except mysql.connector.Error as err: print(f"连接失败: {err}") finally: if 'connection' in locals() and connection.is_connected(): connection.close() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

訾零

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值