下载安装包
MySQL
- 官方地址:https://downloads.mysql.com/archives/community/
国内镜像(推荐):http://mirrors.ustc.edu.cn/mysql-repo/yum/mysql-5.7-community/el/7/x86_64/
安装MySQL
卸载自带MySQL-libs(如果有的话)
[root@iZnm201imn18dkgebcpx40Z ~]# rpm -qa | grep -i -E mysql\|mariadb | xargs -n1 sudo rpm -e --nodeps
rpm -qa:查询所安装的所有rpm软件包
- grep -i:忽略大小写
- xargs -n1:表示每次只传递一个参数
- rpm -e –nodeps:强制卸载软件
安装MySQL
下载依赖和驱动
# 下载安装包和JDBC驱动,共计6个,源文件不带序号,此处标记序号是为了后续依顺序安装01_mysql-community-common-5.7.16-1.el7.x86_64.rpm02_mysql-community-libs-5.7.16-1.el7.x86_64.rpm03_mysql-community-libs-compat-5.7.16-1.el7.x86_64.rpm04_mysql-community-client-5.7.16-1.el7.x86_64.rpm05_mysql-community-server-5.7.16-1.el7.x86_64.rpmmysql-connector-java-5.1.27-bin.jar
安装MySQL依赖
[hadoop@iZnm201imn18dkgebcpx40Z module]$ sudo rpm -ivh 01_mysql-community-common-5.7.16-1.el7.x86_64.rpm[hadoop@iZnm201imn18dkgebcpx40Z module]$ sudo rpm -ivh 02_mysql-community-libs-5.7.16-1.el7.x86_64.rpm[hadoop@iZnm201imn18dkgebcpx40Z module]$ sudo rpm -ivh 03_mysql-community-libs-compat-5.7.16-1.el7.x86_64.rpm
安装mysql-client
[hadoop@iZnm201imn18dkgebcpx40Z module]$ sudo rpm -ivh 04_mysql-community-client-5.7.16-1.el7.x86_64.rpm
安装mysql-server
[hadoop@iZnm201imn18dkgebcpx40Z module]$ sudo rpm -ivh 05_mysql-community-server-5.7.16-1.el7.x86_64.rpm
如果如下报错,则是因为yum安装了旧版本的GPG keys所造成,从rpm版本4.1后,在安装或升级软件包时会自动检查软件包的签名。
[hadoop@iZnm201imn18dkgebcpx40Z 6.Mysql]$ sudo rpm -ivh 05_mysql-community-server-5.7.16-1.el7.x86_64.rpmwarning: 05_mysql-community-server-5.7.16-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEYerror: Failed dependencies:libaio.so.1()(64bit) is needed by mysql-community-server-5.7.16-1.el7.x86_64libaio.so.1(LIBAIO_0.1)(64bit) is needed by mysql-community-server-5.7.16-1.el7.x86_64libaio.so.1(LIBAIO_0.4)(64bit) is needed by mysql-community-server-5.7.16-1.el7.x86_64
解决方法
sudo rpm -ivh 05_mysql-community-server-5.7.16-1.el7.x86_64.rpm --force --nodeps
启动MySQL
启动
sudo systemctl start mysqld
启动报错 ```bash [hadoop@iZnm201imn18dkgebcpx40Z 6.Mysql]$ sudo systemctl start mysqld Job for mysqld.service failed because the control process exited with error code. See “systemctl status mysqld.service” and “journalctl -xe” for details. [hadoop@iZnm201imn18dkgebcpx40Z 6.Mysql]$ sudo systemctl status mysqld ● mysqld.service - MySQL Server Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled) Active: failed (Result: start-limit) since Sun 2022-01-09 16:08:04 CST; 29s ago Process: 8516 ExecStart=/usr/sbin/mysqld —daemonize —pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=127) Process: 8491 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
Jan 09 16:08:04 iZnm201imn18dkgebcpx40Z systemd[1]: Failed to start MySQL Server. Jan 09 16:08:04 iZnm201imn18dkgebcpx40Z systemd[1]: Unit mysqld.service entered failed state. Jan 09 16:08:04 iZnm201imn18dkgebcpx40Z systemd[1]: mysqld.service failed. Jan 09 16:08:04 iZnm201imn18dkgebcpx40Z systemd[1]: mysqld.service holdoff time over, scheduling restart. Jan 09 16:08:04 iZnm201imn18dkgebcpx40Z systemd[1]: start request repeated too quickly for mysqld.service Jan 09 16:08:04 iZnm201imn18dkgebcpx40Z systemd[1]: Failed to start MySQL Server. Jan 09 16:08:04 iZnm201imn18dkgebcpx40Z systemd[1]: Unit mysqld.service entered failed state. Jan 09 16:08:04 iZnm201imn18dkgebcpx40Z systemd[1]: mysqld.service failed.
3. 解决,按照提示输入journalctl -xe,发现erro部分是缺少libaio库(本机是阿里云服务器,最小化安装导致的),yum install -y libaio后重新启动即可```bash[root@iZnm201imn18dkgebcpx40Z ~]# journalctl -xe-- The result is failed.Jan 09 16:18:48 iZnm201imn18dkgebcpx40Z systemd[1]: Unit mysqld.service entered failed state.Jan 09 16:18:48 iZnm201imn18dkgebcpx40Z systemd[1]: mysqld.service failed.Jan 09 16:18:48 iZnm201imn18dkgebcpx40Z systemd[1]: mysqld.service holdoff time over, scheduling restart.Jan 09 16:18:48 iZnm201imn18dkgebcpx40Z systemd[1]: Starting MySQL Server...-- Subject: Unit mysqld.service has begun start-up-- Defined-By: systemd-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel---- Unit mysqld.service has begun starting up.Jan 09 16:18:48 iZnm201imn18dkgebcpx40Z mysqld_pre_systemd[10177]: /usr/sbin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directoryJan 09 16:18:48 iZnm201imn18dkgebcpx40Z mysqld[10202]: /usr/sbin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directoryJan 09 16:18:48 iZnm201imn18dkgebcpx40Z systemd[1]: mysqld.service: control process exited, code=exited status=127Jan 09 16:18:48 iZnm201imn18dkgebcpx40Z systemd[1]: Failed to start MySQL Server.[root@iZnm201imn18dkgebcpx40Z ~]# yum install -y libaio[root@iZnm201imn18dkgebcpx40Z ~]# systemctl start mysqld
- 查看初始密码 ```bash sudo cat /var/log/mysqld.log | grep password
A temporary password is generated for root@localhost: (=+4%5wRs(Me
<a name="HItQU"></a>
## 配置MySQL
<a name="ragQ8"></a>
### 配置root可以在任何主机登录和修改密码
1. 进入MySQL
mysql -uroot -p'你的密码'
2. 修改密码(由于密码策略问题,此处密码需要有一定复杂度)
```bash
mysql> set password=password('你的密码');
修改密码策略
mysql> set global validate_password_length=4; mysql> set global validate_password_policy=0;进入MySQL库
mysql> use mysql修改user表,把root用户的host字段内容修改为%(生产环境不要这么设置)
update user set host="%" where user="root"; # 之后刷新权限 flush privileges;新增用户
```sql
模板
CREATE USER ‘username’@’host’ IDENTIFIED BY ‘password’;
示例
CREATE USER ‘hive’@’10.10.204.91’ IDENTIFIED BY ‘hive123456’; CREATE USER ‘hive’@’localhost’ IDENTIFIED BY ‘123456’; CREATE USER ‘jh_djd’@’188.3.10.213’ IDENTIFIED BY ‘%LViQWB^G6F^5CEMaR’;
CREATE USER ‘hive’@’172.20.0.0/255.255.0.0’ IDENDIFIED BY ‘123456’;
CREATE USER ‘hive’@’%’ IDENTIFIED BY ‘123456’;
CREATE USER ‘hive’@’%’ IDENTIFIED BY ‘’;
CREATE USER ‘hive’@’%’;
<a name="RqZ7o"></a>
# 修改数据库权限
```sql
# 修改 {user} 和 {password} 为你的用户名和密码
GRANT ALL PRIVILEGES ON database.table_name TO '{user}'@'%' IDENTIFIED BY '{password}';
# 示例
GRANT ALL PRIVILEGES ON metastore.* TO '{user}'@'%' IDENTIFIED BY '{password}';
GRANT ALL PRIVILEGES ON jhdjd.* TO 'jh_djd'@'%' IDENTIFIED BY '%LViQWB^G6F^5CEMaR';
GRANT ALL PRIVILEGES ON metastore.* TO '{user}'@'localhost' IDENTIFIED BY '{password}';
