Linux下Mysql数据库
Hive组成
Hive组成 描述 用户接口 包含shell客户端、JDBC、ODBC、Web接口等 元数据库 定义在hive中的表结构信息,一般保存到关系型数据库中,默认是derby,一般使用mysql进行保存。 解析器 将HQL语句转换为mapreduce代码 数据仓库 由hdfs组成的数据存储容器。 Hive安装依赖软件包Mysql,作为元数据库,默认的Derby数据库由于单会话的限制,无法直接使用。
以下用的是 mysql 8.0.18 版本
第一步:使用root用户安装mysql
在CentOS中默认安装有MariaDB,这个是MySQL的分支,但为了需要,还是要在系统中安装MySQL,而且安装完成之后可以直接覆盖掉MariaDB。
在MySQL官网中下载YUM源rpm安装包:http://dev.mysql.com/downloads/repo/yum/
# 下载 mysql源安装包 [root@master ~]# wget https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm
如果出现问题:DNS有问题,之前手动配置DNS导致,执行如下内容(8.8.8.8是谷歌提供的)。
# 谷歌提供的 DNS域名解析 echo 'nameserver 8.8.8.8'>>/etc/resolv.conf # 阿里巴巴提供的 DNS域名解析 echo 'nameserver 223.5.5.5'>>/etc/resolv.conf echo 'nameserver 223.6.6.6'>>/etc/resolv.conf
# 安装 mysql源 [root@master ~]#yum -y install mysql80-community-release-el7-3.noarch.rpm # 检查 mysql源是否安装成功 [root@master ~]# yum repolist enabled | grep "mysql.*-community.*"
可以修改
vim /etc/yum.repos.d/mysql-community.repo
源,改变默认安装的mysql版本。比如要安装8.0版本,将8.0源的enabled=0改成enabled=1即可。改完之后的效果如下所示:# Enable to use MySQL 5.5 [mysql55-community] name=MySQL 5.5 Community Server baseurl=http://repo.mysql.com/yum/mysql-5.5-community/el/7/$basearch/ enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql # Enable to use MySQL 5.6 [mysql56-community] name=MySQL 5.6 Community Server baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/7/$basearch/ enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql # Enable to use MySQL 5.7 [mysql57-community] name=MySQL 5.7 Community Server baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/ enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql [mysql80-community] name=MySQL 8.0 Community Server baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/7/$basearch/ enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql [mysql-connectors-community] name=MySQL Connectors Community baseurl=http://repo.mysql.com/yum/mysql-connectors-community/el/7/$basearch/ enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql [mysql-tools-community] name=MySQL Tools Community baseurl=http://repo.mysql.com/yum/mysql-tools-community/el/7/$basearch/ enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql [mysql-tools-preview] name=MySQL Tools Preview baseurl=http://repo.mysql.com/yum/mysql-tools-preview/el/7/$basearch/ enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql [mysql-cluster-7.5-community] name=MySQL Cluster 7.5 Community baseurl=http://repo.mysql.com/yum/mysql-cluster-7.5-community/el/7/$basearch/ enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql [mysql-cluster-7.6-community] name=MySQL Cluster 7.6 Community baseurl=http://repo.mysql.com/yum/mysql-cluster-7.6-community/el/7/$basearch/ enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql [mysql-cluster-8.0-community] name=MySQL Cluster 8.0 Community baseurl=http://repo.mysql.com/yum/mysql-cluster-8.0-community/el/7/$basearch/ enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
# 安装MySQL [root@master ~]# yum -y install mysql-community-server # 如果出现问题,先执行如下命令: [root@master ~]# yum -y remove mariadb-libs
# 安装后再次查看mysql [root@master ~]# rpm -qa|grep mysql
第二步:修改配置信息
配置默认编码,添加如下信息到:/etc/my.cnf
[mysql] default-character-set=utf8 [mysqld] character-set-server=utf8 lower_case_table_names=1 # 表名存储在磁盘是小写的,但是比较的时候是不区分大小写
第三步:启动mysql
# 首先启动 MySQL [root@master ~]# systemctl start mysqld.service # 或者 [root@master ~]# systemctl start mysqld # 查看 MySQL运行状态 [root@master ~]# systemctl status mysqld.service # 或者 [root@master ~]# systemctl status mysqld
# 查看数据库默认编码如下所示: mysql> SHOW VARIABLES LIKE '%character%';
第四步:设置root用户密码
此时MySQL已经开始正常运行,不过要想进入MySQL还得先找出此时root用户的默认密码,通过如下命令可以在日志文件中找出默认密码:
[root@master log]# grep 'password' /var/log/mysqld.log
# 进入数据库,输入初始密码(s/GnPh8YHLAO) [root@master log]# mysql -uroot -p
输入初始密码,此时不能做任何事情,因为MySQL默认必须修改密码之后才能操作数据库:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root@163.com'; # 查看初始密码策略的相关信息: mysql> SHOW VARIABLES LIKE 'validate_password.%';
注意:默认安装了密码安全检查插件(validate_password),默认密码检查策略要求密码必须包含:大小写字母、数字和特殊符号,并且长度不能少于8位。否则会提示ERROR 1819 (HY000): Your password does not satisfy the current policy requirements错误,如下图所示:
validate_password_dictionary_file:密码策略文件,策略为STRONG才需要
validate_password_length:密码最少长度
validate_password_mixed_case_count:大小写字符长度,至少1个
validate_password_number_count :数字至少1个
validate_password_policy:密码策略,默认为MEDIUM策略,需要提供密码字典文件
validate_password_special_char_count:特殊字符至少1个MySQL官网密码策略详细说明:https://dev.mysql.com/doc/refman/8.0/en/validate-password-options-variables.html
修改密码策略:(默认的密码繁琐)
# 修改如下命令:选择0(LOW),1(MEDIUM),2(STRONG)其中1是默认的 mysql> set global validate_password.policy=0; # 设置密码的最小长度 mysql> set global validate_password.length=1;
如果不需要密码策略,添加my.cnf文件中添加如下配置禁用即可:validate_password = off
重新修改root用户密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
在 MySQL 8.0 中,caching_sha2_password 是默认的身份验证插件而不是之前版本的 mysql_native_password,默认的密码加密方式是 SHA2 。
# host: 允许用户登录的ip‘位置'%表示可以远程; # user:当前数据库的用户名; # authentication_string: 用户密码(后面有提到此字段); mysql> SELECT `Host`,`User`,`authentication_string`,`plugin` FROM user;
注意:因为安装了Yum Repository,以后每次yum操作都会自动更新,需要把这个卸载掉:
[root@master log]# yum -y remove mysql80-community-release-el7-3.noarch
默认只允许root帐户在本地登录,如果要在其它机器上连接 mysql,必须修改root允许远程连接,或者添加一个允许远程连接的帐户,为了安全起见,我添加一个新的帐户hive:
第五步:授权hive用户远程登录
Mysql8.0默认的加密方式是“caching_sha2_password”,而Navicat for MySQL只支持以前的"mysql_native_password",所以接下来修改密码加密方式:
### 授权语句创建用户 # 创建用户(hive:用户名; %:任意ip,也可以指定,root默认就是localhost; hive:登录密码) mysql> CREATE USER 'hive'@'%' IDENTIFIED WITH mysql_native_password BY 'hive';
出现以上绿色箭头问题:①该用户在user表中不存在,没有这个用户;②上次删除这个用户,木有刷新权限;③如果还是不行,再删除一次;
mysql> DROP USER 'hive'@'%'; mysql> FLUSH PRIVILEGES; mysql> CREATE USER 'hive'@'%' IDENTIFIED WITH mysql_native_password BY 'hive';
# 查看新增用户 hive 的plugin是否是"mysql_native_password" mysql> SELECT `Host`,`User`,`authentication_string`,`plugin` FROM user; ### 授权,默认创建的用户权限是usage,就是无权限,只能登录而已; #(all:所有权限,这里有select,update等等权限;后面的*.*:指定数据库.指定表,这里是所有;to后面就是刚才创建的用户) mysql> GRANT ALL ON *.* TO 'hive'@'%' WITH GRANT OPTION ; # 刷新权限 mysql> FLUSH PRIVILEGES;
用Navicat连接看是否可以远程登陆,默认端口为3306,如果不能,则查看防火墙是否开启了该端口。
第六步:创建数据库
使用新用户登录,然后创建数据库,并修改数据库的连接方式
mysql> CREATE DATABASE hive; mysql> ALTER DATABASE hive CHARACTER SET latin1;