安装yum源
CentOS7默认安装MariaDB,安装mysql8就需要添加mysql官方yum源
首先需要下载官方yum源
wget https://repo.mysql.com/mysql80-community-release-el7.rpm
yum -y install mysql80-community-release-el7.rpm
如果报如下错误:
错误:软件包:mysql-community-libs-8.0.36-1.el7.x86_64 (/mysql-community-libs-8.0.36-1.el7.x86_64)
需要:mysql-community-client-plugins = 8.0.36-1.el7
那么需下载对应rpm包先行安装。
如果报如下错误:
安装mysql报错信息mysql-community-common(x86-64))=5.7.9isneededbymysql-community-libs
解决:清除yum里所有mysql依赖包
[root@hadoop mysql-5.7.16]# rpm -qa|grep mysql
[root@hadoop mysql-5.7.16]# yum remove mysql-libs
安装mysql服务器
yum -y install mysql-community-server
启动服务
现在使用 systemctl 启动mysql守护进程
systemctl start mysqld
第一次启动mysql会初始化数据库,所以需要点时间
查看root密码
对于CentOS8,从默认源安装mysql8没有密码,可以直接mysql进入使用
对于CentOS7,从官方源安装会生成默认密码,可以通过后面的步骤查看密码并修改
初始化数据库的时候会为root设置一个默认密码,这个密码在log文件中可以找到
less /var/log/mysqld.log # 查看日志查看密码
# 会有一行 password is generated XXXXX
或者可以使用下面语句直接提取出密码
grep "password is generated" /var/log/mysqld.log | awk '{print $NF}'
找到密码后可以用以下命令输入密码进入数据库
mysql -uroot -p
第一次进入数据库只能修改密码,不能做任何事
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';
这里的新密码不能太简单,因为mysql默认对密码有复杂度要求
可以通过下面命令关闭复杂度要求
show global variables like '%validate_password%';
mysql> set global validate_password.policy=0; # 关闭密码复杂性策略
mysql> set global validate_password.length=4; # 设置密码最低长度为4
关闭防火墙
- centos7
检查防火墙状态:
systemctl status firewalld
关闭防火墙:
systemctl stop firewalld.service
关闭后,可查看防火墙状态,当显示disavtive(dead)的字样,说明CentOS 7防火墙已经关闭。
但要注意的是,上面的命令只是临时关闭了CentOS 7防火墙,当重启操作系统后,防火墙服务还是会再次启动。如果想要永久关闭防火墙则还需要禁用防火墙服务。
禁用防火墙服务
- centos7
systemctl disable firewalld.service
安装Zabbix时遇到的问题
1、提示缺少依赖libmysqlclient.so.18(64bit)
2、到https://pkgs.org/下载RPM包:
wget https://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/mysql-community-libs-compat-5.7.32-1.el7.x86_64.rpm
3、安装mysql-community-libs-compat-5.7.32-1.el7.x86_64.rpm
rpm -vih mysql-community-libs-compat-5.7.32-1.el7.x86_64.rpm
4、问题解决
登录zabbix链接数据库时遇到的问题
mysql 安装了最新版本8.0.11后创建用户并授权后,授权的用户连接数据库提示
The server requested authentication method unknown to the client
查阅一些相关的资料后发现是由于新版本的mysql账号密码解锁机制不一致导致的
解决办法:
删除创建的用户和授权,
-
找到mysql配置文件(
/etc/my.cnf)并加入
-
default_authentication_plugin=mysql_native_password
变为原来的验证方式,然后从新创建用户并授权即可
或
-
mysql -uroot -p
-
use mysql;
-
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
登录zabbix后报错(不确定,后来发现是我忘了给zabbix server配置数据库密码):
Zabbix server is running | No | localhost:10051 |
---|
估计是仅更改zabbix@localhost密码认证方式还是不到位,应该删除zabbix用户重建
drop
drop user XXX;删除已存在的用户,默认删除的是'XXX'@'%'这个用户,如果还有其他的用户如'XXX'@'localhost'等,不会一起被删除。如果要删除'XXX'@'localhost',使用drop删除时需要加上host即drop user 'XXX'@'localhost'。
delete
delete from user where user='XXX' and host='localhost';其中XXX为用户名,localhost为主机名。
区别
drop不仅会将user表中的数据删除,还会删除其他权限表的内容。而delete只删除user表中的内容,所以使用delete删除用户后需要执行FLUSH PRIVILEGES;刷新权限,否则下次使用create语句创建用户时会报错。