Linux下的Mysql安装以及Hive的Mysql安装
Mysql安装
1.检查当前虚拟机是否安装过mysql
执行: rpm -qa | grep mysql
如果出现下图,证明已经安装了mysql,需要删除
2.删除mysql
执行:rpm -ev --nodeps mysql-libs-5.1.71-1.el6.x86_64
此时,再执行:rpm -qa | grep mysql 发现没有相关信息了
若安装过Percona的mysql,删除需执行:rpm -qa | grep Percona查看是否安装过
删除:rpm -ev --nodeps Percona……
再执行:rm -rf /var/lib/mysql
rm -rf /etc/my.cnf.d
3.新增mysql用户组,并创建mysql用户
groupadd mysql
useradd -r -g mysql mysql
4.安装mysql server包和client包
rpm -ivh MySQL-server-5.6.29-1.linux_glibc2.5.x86_64.rpm
rpm -ivh MySQL-client-5.6.29-1.linux_glibc2.5.x86_64.rpm
5.修改my.cnf,默认在/usr/my.cnf
vim /usr/my.cnf
在内部加入:
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
character_set_server=utf8
6.将mysqlId加入系统服务,并随虚拟机启动
cp /usr/share/mysql/mysql.server /etc/init.d/mysqld
说明:/etc/init.d 是linux的一个特殊目录,放在这个目录的命令会随linux开机而启动。
7.启动mysqlId
service mysqld start
8.查看初始生成的密码
vim /root/.mysql_secret 这个密码随机生成的,拷贝这个密码便于修改
9.修改初始密码
mysqladmin -u root -p password root 此时,提示要输入初始生成的密码,拷贝过来即可
10.进入mysql数据库
mysql -uroot -p密码
Hive配置MySql
Hive的数据,是存在HDFS里的。此外,hive有哪些数据库,每个数据库有哪些表,这样的信息称之为hive的元数据信息。
元数据信息不存在HDFS里。而是存在关系型数据库里,hive默认用的是derby数据库来存储。即hive工作时,除了要依赖Hadoop,还要依赖关系型数据库。
在使用Hive的会遇到在不同目录进入hive,会发现库和表没有了,这是derby数据库的问题,所有可以修改选择使用mysql。
实现步骤:
1.删除hdfs中的/user/hive
hadoop fs -rmr /user/hive
2.将mysql驱动包上传到hive安装目录的lib目录下
3.在hive的conf目录下编辑新的配置文件
vim hive-site.xml
配置信息如下:
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop01:3306/hive?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
</property>
</configuration>
4.进入hive的bin目录下,执行:sh hive
如果出现:Access denied for user ‘root’@‘hadoop01’ (using password: YES)这个错误,指的是当前用户操作mysql数据库的权限不够。
5.进入mysql数据库,进行权限分配
grant all privileges on . to ‘root’@‘hadoop01’ identified by ‘root’ with grant option;
然后执行: flush privileges;
6.创建hive数据库,并指定字符集
如果不事先在mysql里创建hive数据库,在进入hive时,mysql会自动创建hive数据库。但是注意,因为我们之前配置过mysql的字符集为utf-8,所以这个自动创建的hive数据库的字符集是utf-8的。
但是hive要求存储元数据的字符集必须是iso8859-1。如果不是的话,hive会在创建表的时候报错(先是卡一会,然后报错)
在mysql数据库中执行:create database hive character set latin1;
以上步骤执行完后,在mysql的hive数据库下会有如下表: