Navicat MySQL连接Linux下MySQL的问题解决方案

1、遇到无法连接,如图所示:
在这里插入图片描述
(1)我们尝试查看数据库,执行命令:

mysql> show databases;

+--------------------+
| Database           |
+--------------------+
| information_schema |
| company            |
| metastore          |
| mysql              |
| oozie              |
| performance_schema |
| staff              |
| sys                |
+--------------------+
8 rows in set (0.01 sec)

(2)查看数据库的表显示出来:

mysql> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| engine_cost               |
| event                     |
| func                      |
| general_log               |
| gtid_executed             |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| innodb_index_stats        |
| innodb_table_stats        |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| proxies_priv              |
| server_cost               |
| servers                   |
| slave_master_info         |
| slave_relay_log_info      |
| slave_worker_info         |
| slow_log                  |
| tables_priv               |
| tb_emp1                   |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+
32 rows in set (0.02 sec)

(3)系统数据库下的Mysql数据表下,若查询表user,如果,执行命令:

select * from user;

会出现乱码,如图所示:

在这里插入图片描述
为了直观清楚观看,我们可以这样执行:

mysql> select * from user\G;

如图所示:
在这里插入图片描述
(4)这时,我们需要插入一条语句,可能会出错

mysql> select host,user,password from user;

ERROR 1054 (42S22): Unknown column 'password' in 'field list'

排查这个问题,我们可以从mysql中表user的结构看,直接执行:

mysql> describe user;

在这里插入图片描述
在这里插入图片描述
我们需要注意的是,从图中可以发现:
password替换成authentication_string,所以直接执行:select host,user,password from user;
就会出现错误:

ERROR 1054 (42S22): Unknown column 'password' in 'field list'

正确的执行:

mysql> select host,user,authentication_string from user;

+-----------+---------------+-------------------------------------------+
| host      | user          | authentication_string                     |
+-----------+---------------+-------------------------------------------+
| localhost | root          | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| localhost | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| localhost | mysql.sys     | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
+-----------+---------------+-------------------------------------------+
3 rows in set (0.00 sec)

(5)接下来,我们还需要对执行权限命令:

mysql> grant all privileges on *.* to root@'%' identified by '123456';

发生另一个错误:

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

这个错误的原因主要是:密码策略问题异常信息,当我们知道了这个原因,就好办了!

解决步骤:

(1)查看 mysql 初始的密码策略,执行命令:

mysql> SHOW VARIABLES LIKE 'validate_password%'; 

+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password_check_user_name    | OFF    |
| validate_password_dictionary_file    |        |
| validate_password_length             | 8      |
| validate_password_mixed_case_count   | 1      |
| validate_password_number_count       | 1      |
| validate_password_policy             | MEDIUM |
| validate_password_special_char_count | 1      |
+--------------------------------------+--------+
7 rows in set (0.14 sec)

由此可见: validate_password_length | 8 |:与自己自定义的密码不符合它的要求规范,我们现在需要把它默认的规范改为6位!

(2)首先需要设置密码的验证强度等级,设置 validate_password_policy 的全局参数为 LOW 即可

mysql> set global validate_password_policy=LOW; 
Query OK, 0 rows affected (0.00 sec)

设置为6位数的密码

mysql>  set global validate_password_length=6;
Query OK, 0 rows affected (0.00 sec)

(3)再次查看 mysql 初始的密码策略

mysql> SHOW VARIABLES LIKE 'validate_password%'; 

+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| validate_password_check_user_name    | OFF   |
| validate_password_dictionary_file    |       |
| validate_password_length             | 6     |
| validate_password_mixed_case_count   | 1     |
| validate_password_number_count       | 1     |
| validate_password_policy             | LOW   |
| validate_password_special_char_count | 1     |
+--------------------------------------+-------+
7 rows in set (0.00 sec)

(5)现在可以为 mysql 设置简单密码了,只要满足六位的长度即可!

mysql> grant all privileges on *.* to root@'%' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.01 sec)

(5)我们还需要做,再次执行权限命令:

mysql> grant all privileges on *.* to root@'%' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.01 sec)

(6)最后,再次查看权限信息,直接执行:

mysql> select host,user,authentication_string from user;
+-----------+---------------+-------------------------------------------+
| host      | user          | authentication_string                     |
+-----------+---------------+-------------------------------------------+
| localhost | root          | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| localhost | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| localhost | mysql.sys     | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| %         | root          | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-----------+---------------+-------------------------------------------+
4 rows in set (0.00 sec)

多了一个%号

注意授权后必须FLUSH PRIVILEGES;
否则无法立即生效。

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

(7)工作准备完毕之后,我们就可以连接window的客服端工具navicat,提示要注意的是:
关闭防火墙:systemctl stop firewalld.service

[root@hadoop105 conf]# systemctl stop firewalld.service

我们就可以做进行连接:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: navicat连接LinuxMySQL报错1045可能是因为以下原因之一: 1. 用户名或密码错误:请确保您使用正确的用户名和密码登录MySQL。如果您不确定,请在终端尝试登录MySQL并尝试更改密码。 2. 权限问题:请检查您的MySQL用户是否具有足够的权限来连接MySQL。您可以使用以下命令来检查: ``` mysql> show grants for 'your_user'@'your_host'; ``` 3. 防火墙设置问题:请确保您的Linux服务器上的防火墙未阻止Navicat连接MySQL。请检查您的防火墙设置并确保允许MySQL连接。 4. MySQL配置问题:请检查您的MySQL配置文件并确保已启用远程连接。 希望这些解决方法能够帮助您解决问题。 ### 回答2: navicat连接linuxmysql报错1045是因为连接参数的用户名或密码输入错误,导致无法验证身份。解决这个问题的方法有以下几种: 1. 检查用户名和密码是否正确:在navicat连接参数确认所使用的用户名和密码是否与Linux上的MySQL配置相匹配。确保用户名和密码的大小写是否一致。 2. 检查MySQL是否允许远程连接:在LinuxMySQL配置文件,通常是/etc/mysql/my.cnf,找到bind-address项,并将其注释或设置为0.0.0.0,以允许其他主机远程连接。 3. 检查防火墙设置:确保Linux的防火墙或其他安全软件没有阻止从navicat连接MySQL的访问。可以临时关闭防火墙进行测试,或者配置防火墙允许MySQL连接端口(默认为3306)的访问。 4. 检查MySQL授权表:连接LinuxMySQL服务器,使用正确的用户名和密码登录MySQL,执行命令SHOW GRANTS FOR 'username'@'localhost';(将username替换为实际的用户名)来查看该用户是否具有从navicat连接MySQL的权限。 5. 重置MySQL密码:如果以上方法都无效,可以尝试重置MySQL用户的密码。在MySQL执行命令SET PASSWORD FOR 'username'@'localhost' = PASSWORD('newpassword');(将username替换为实际的用户名,newpassword替换为新的密码)来重置密码,然后使用新密码尝试连接。 通过以上方法,应该能够解决navicat连接LinuxMySQL报错1045的问题,使连接成功。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值