mysql ERROR 1046,1054,1045,1044

在hive和MySQL的各种报错下弄了好久。。。。。可谓一步一坑
1。 刚进MySQL时show tables;报错:在这里插入图片描述
只有选中一个数据库才可以查看该数据库内的tables。eg:use mysql;
简单来说select user,password,host from user;这个命令必须是针对某个具体的数据库而言的。

2。查看到用户和密码报错。出现ERROR 1054 (42S22): Unknown column ‘password’ in ‘field list’
在这里插入图片描述
在这里插入图片描述
select host,user,password from mysql.user;//即可查看到用户和密码的命令

但因为mysql数据库下已经没有password这个字段了,password字段改成了

authentication_string

所以只需要将password改成authentication_string就好。
改为 select host,user,authentication_string from mysql.user;

4。
在这里插入图片描述

3。show databases;报错:
在这里插入图片描述
出现报错:Ignoring query to other database
是因为登录的时候少打了一个u。在这里插入图片描述

4。
创建hive用户,设置的密码报错:
这个其实与validate_password_policy的值有关。
所以只需要设置下validate_password_policy就可以了。
mysql>set global validate_password_policy=0;
mysql> set global validate_password_length=1;

这样,判断密码的标准就基于密码的长度了。这个由validate_password_length参数来决定。
然后进行密码设置,就不会报错
在这里插入图片描述

5。MySQL打错符号怎么退出:
在这里插入图片描述

输入 '/Ctrl+c 可以结束当前错误语句。

6。 使用命令 schematool -initSchema -dbType mysql; 初始化mysql报错:
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure Last packet sent to the server was 0 ms ago

上述问题是由mysql5数据库的配置引起的。mysql5将其连接的等待时间(wait_timeout)缺省为8小时。在其客户程序中可以这样来查看其值:

mysql﹥ show global variables like ‘wait_timeout’;

±--------------±--------+

| Variable_name | Value |

±--------------±--------+

| wait_timeout | 28800 |

±--------------±--------+

1 row in set (0.00 sec)

28800 seconds,也就是8小时。

如果在wait_timeout秒期间内,数据库连接(java.sql.Connection)一直处于等待状态,mysql5就将该连接关闭。这时,你的Java应用的连接池仍然合法地持有该连接的引用。当用该连接来进行数据库操作时,就碰到上述错误。
在这里插入图片描述
解决:
直接用sql命令行修改 mysql> set global wait_timeout=604800;
除了wait_timeout,还有一个’interactive_timeout’
同样可以执行SHOW GLOBAL VARIABLES LIKE 'interactive_timeout’来查询
执行set global interactive_timeout=604800; 来设置 。

7。然后初始化继续报错,原因是hive-site.xml里面JDBC的链接需要加入SSL=false。
在这里插入图片描述

javax.jdo.option.ConnectionURL
jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true&characterEncoding=UTF-8&useSSL=false&

8。继续错:
Underlying cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException : Access denied for user ‘hive’@’%’ to database ‘hive’
SQL Error code: 1044
在这里插入图片描述
使用命令 select host,user,authentication_string,Grant_priv,Super_priv from mysql.user;查看权限,发现用户’hive’@’%'的权限都是关闭的。
在这里插入图片描述
可以看到授权的权限没有打开: Grant_priv is set to N for root@%. 修复下:
mysql> UPDATE mysql.user SET Grant_priv=‘Y’, Super_priv=‘Y’ WHERE User=‘hive’;
mysql> flush privileges;
在这里插入图片描述
9。还是报1044错误,在这里插入图片描述
终于找到原因,一口老血。
在hive-site.xml里面,
在这里插入图片描述在这里插入图片描述
因为是在本地搭的mysql和hive。
然后就不报错了。
在这里插入图片描述

10。启动hive,能顺利启动,但show databases;又报错:(原因也出在hive-site.xml上,只要配置好了就不出错了)这里我是因为和问题9的一样,9解决了10也没问题了。所以有问题的话还是要多多查看配置文件,不然搞死人 T^T.
在这里插入图片描述
在这里插入图片描述

另外再记一些解决问题过程中的小知识。
netstat -antup | grep mysql 查看MySQL端口号。
在这里插入图片描述

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值