因为Hive本身的Derby数据库功能很弱,所以准备替换成Mysql,但是没想到还是有些坑在里面。替换数据库问题忙了一下午。现在给大家整理一下。
一、首先要保证hive原本使用是没有问题的,接下来将mysql安装到linux,这里务必保证mysql的版本功能是支持你的hive版本的。如果之前安装过mysql,可以用rpm -qa | grep -i mysql 查看之前的版本,然后用rpm -ev –nodeps mysql-libs-5.1.71-1.el6.x86_64(原来安装的版本)这个命令进行清除,然后再次执行rpm -qa | grep -i mysql为空,说明清除成功。
二、安装新的mysql,这个地方我是安装的MySQL-server-5.6.29-1.linux_glibc2.5.x86_64.rpm和MySQL-client-5.6.29-1.linux_glibc2.5.x86_64.rpm两个压缩包(hive是1.2.0的版本)。注意,解压压缩包之前,需要添加用户组groupadd mysql,增加用户mysql,加入mysql用户组 useradd -r -g mysql mysql安装完成,然后先安装server,再安装client。
#修改my.cnf,默认在/usr/my.cnf
vim /usr/my.cnf
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
character_set_server=utf8
# basedir = .....
# datadir = .....
# port = .....
# server_id = .....
# socket = .....
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
#将mysqld加入系统服务,并随机启动
cp /usr/share/mysql/mysql.server /etc/init.d/mysqld
#启动mysqld
service mysqld start
#获取mysql安装时root用户的随机密码
vim /root/.mysql_secret
#必须要修改root用户的密码才可以使用mysql,否则只能连接不能操作
mysqladmin -u root -p password root
#连接进入mysql
mysql -u root -p
root
三、进入hive下的bin目录,启动hive命令,发现报错,仔细观察,发现里面有一段错误
The specified datastore driver ("com.mysql.jdbc.Driver") was not found in the CLASSPATH. Please check your CLASSPATH specification, and the name of the driver.
这个是说明需要把连接数据库的包放到hive的lib下面。放好之后发现再次启动还是报错,那么这个时候会看到报错信息中有这么一句。
Access denied for user 'root'@'hadoop01' (using password: YES)
这说明在数据库中没有权限,链接被拒绝。需要放开数据库的权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
但是这个开启权限有一个坑,如果还是报上面权限的错误,那么需要将上面的命令中的%改成自己的主机名或者是ip,然后再次启动hive就会发现成功了