MySQL8设置DBeaver远程连接

首先,在服务器上登录 MySQL:

mysql -u root -p

授予用户远程访问权限:
允许用户 root 从任意 IP 远程访问,并且允许其访问所有数据库:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_password' WITH GRANT OPTION;
FLUSH PRIVILEGES;

这里的 '%' 表示允许任意 IP 连接。你也可以限制为特定的 IP 地址:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'specific_ip_address' IDENTIFIED BY 'your_password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
 

报错:

mysql> grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'identified by '123456' with grant option' at line 1
 

出现 ERROR 1064 (42000) 错误通常是由于 SQL 语法错误或不兼容的 MySQL 版本导致的。在你提到的情况下,可能是因为使用了不正确的语法。

MySQL 在不同版本中对权限管理的语法有所变动,尤其是 MySQL 8.x 及以上版本。

解决方法
1. MySQL 8.x 版本:使用 CREATE USER 和 GRANT 命令
在 MySQL 8.x 版本中,推荐先使用 CREATE USER 创建用户,再使用 GRANT 分配权限,而不是直接在 GRANT 中使用 IDENTIFIED BY。

-- 1. 创建用户
CREATE USER 'root'@'%' IDENTIFIED BY '123456';

-- 2. 授予权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

-- 3. 刷新权限
FLUSH PRIVILEGES;

2. 如果你使用的是 MySQL 5.x 版本
在 MySQL 5.x 版本中,下面的命令是正确的:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
FLUSH PRIVILEGES;
但是,确保你使用的 MySQL 版本确实支持这种语法。

3. 确认 MySQL 版本
你可以通过以下命令查看当前的 MySQL 版本:
SELECT VERSION();
其他可能的原因
确认密码是否符合 MySQL 的复杂性要求(有些版本可能会对密码设置有更严格的规则)。
检查是否在密码中使用了可能导致冲突的特殊字符。如果密码中包含特殊字符如单引号 (') 或双引号 ("),请用反斜杠 (\) 进行转义,或者换用不含特殊字符的密码进行测试。
如果按照上述步骤操作,问题仍未解决,可以尝试将错误信息完整地提供出来,以进一步排查问题。
 

故:

-- 1. 创建用户
CREATE USER 'root'@'%' IDENTIFIED BY '123456';

-- 2. 授予权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

-- 3. 刷新权限
FLUSH PRIVILEGES;
 

依旧报错:

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements 表示 MySQL 的密码策略不允许你使用当前设置的密码。MySQL 通常会使用一个插件(validate_password)来确保密码符合安全策略,包括长度、复杂度等要求。

解决方法
1. 检查密码策略的要求
你可以通过以下命令查看当前的密码策略设置:

SHOW VARIABLES LIKE 'validate_password%';
这会返回几个重要的变量,例如:

validate_password.policy:密码策略的级别。常见级别:
LOW:只要求密码长度。
MEDIUM:要求密码长度、包含数字、大写和小写字母,以及特殊字符。
STRONG:进一步要求密码不包含字典单词。
validate_password.length:要求的最小密码长度(默认为 8)。
validate_password.mixed_case_count:要求的至少包含的大写和小写字母数量。
validate_password.number_count:要求的至少包含的数字数量。
validate_password.special_char_count:要求的至少包含的特殊字符数量。

2. 设置符合策略要求的密码
根据上述策略要求,设置一个符合条件的密码。例如,如果你的策略是 MEDIUM,那么密码应满足以下条件:

至少 8 个字符。
至少包含一个大写字母、一个小写字母、一个数字和一个特殊字符。
例如:

CREATE USER 'root'@'%' IDENTIFIED BY 'MyStr0ngP@ssw0rd!';

3. 修改密码策略
如果你希望放宽密码策略要求,可以调整策略参数。例如,降低策略级别到 LOW:

SET GLOBAL validate_password.policy = LOW;

或者,修改密码长度要求:

SET GLOBAL validate_password.length = 6;
注意:为了确保系统安全,建议不要完全禁用密码验证策略
 

flush privileges;

mysql> alter user 'root'@'%' identified by '123456';
ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'%'
 

ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'%' 错误通常是因为在 MySQL 中尝试操作的用户或主机组合不存在,或者该用户在权限系统中出现了冲突。具体来说,可能是以下几个原因:

该用户不存在。
用户权限或主机信息配置有问题。
在 MySQL 8.x 中,root 用户的权限受到更严格的控制。
解决方法

1. 检查用户是否存在
首先,确认 root 用户是否存在,以及是否允许从 %(任意主机)进行连接。

运行以下 SQL 查询:
SELECT User, Host FROM mysql.user WHERE User = 'root';
检查是否有一行记录显示 User 为 root 且 Host 为 %。

2. 如果用户不存在,重新创建用户
如果发现 root@% 不存在,可以尝试创建该用户:

CREATE USER 'root'@'%' IDENTIFIED BY 'your_password';
然后再授予权限:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

3. 如果用户已存在,尝试更新密码
如果用户存在但仍出现错误,可以尝试通过 ALTER USER 更新密码:

ALTER USER 'root'@'%' IDENTIFIED BY 'your_new_password';

4. 删除并重新创建用户
如果上述方法不起作用,你可以删除并重新创建用户:

DROP USER 'root'@'%';
然后重新创建用户并设置权限:

CREATE USER 'root'@'%' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

5. 确保权限已刷新
在修改用户权限或创建用户后,务必运行 FLUSH PRIVILEGES 以刷新权限缓存:
FLUSH PRIVILEGES;

6. 检查 MySQL 配置文件
确保 my.cnf 或 my.ini 中的 bind-address 允许远程连接(通常应设置为 0.0.0.0 以允许所有 IP)。

使用123步都报错,故直接删了root:

mysql> drop user 'root'@'localhost';
Query OK, 0 rows affected (0.01 sec)

mysql> CREATE USER 'root'@'%' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.01 sec)

mysql> grant all privileges on *.* to 'root'@'%' with grant option;
Query OK, 0 rows affected (0.02 sec)

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

reboot后看MySQL启动没有:

登进去MySQL查看:

打开DBeaver:

数据库-新建数据库连接

点击MySQL

输好IP地址,密码,点击测试连接,初次会下载驱动

点击完成后,右键点击右边创建好的IP,选择SQL编辑器,测试:

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
dbeaver连接MySQL连接失败可能有多种原因。首先,确保你已经正确安装了MySQL服务器和dbeaver客户端,并且它们都在同一台机器上运行。然后,检查以下几个可能的问题: 1. 检查MySQL服务器是否已经启动。你可以通过在命令行中运行`mysql -u root -p`命令来检查服务器是否可以正常连接。 2. 确保你在dbeaver中正确设置MySQL连接参数。打开dbeaver,点击“新建连接”,填写正确的主机名、端口号、用户名和密码。确保这些参数与你的MySQL服务器设置相匹配。 3. 检查防火墙设置。防火墙可能会阻止dbeaverMySQL服务器建立连接。确保你的防火墙允许dbeaverMySQL之间的通信。 4. 检查MySQL服务器的访问权限。确保你的MySQL服务器允许来自dbeaver的连接。你可以通过在MySQL服务器上运行以下命令来授予远程访问权限: ``` GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION; FLUSH PRIVILEGES; ``` 注意替换`username`和`password`为你自己的用户名和密码。 5. 检查网络连接。确保你的机器可以正常连接到MySQL服务器所在的网络。你可以尝试使用ping命令或telnet命令来测试网络连接。 如果你仍然无法连接到MySQL服务器,请检查上述步骤并确保没有遗漏任何设置。如果问题仍然存在,可能是由于其他原因引起的,你可能需要进一步调查或寻求专业的技术支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值