下载安装包
拉到网页的最下面
centos系统是属于红帽企业的因此应该选择红帽企业的OS系统版本。
下载MySQL-8.0.17-1.el7.x86_64.rpm-bundle.tar,我下载的mysql8.0.17版本,下载新版本类似,找到对应的rpm-bundle.tar安装包下载即可!
这块非常重要,如果你不小心安装了el8的,在centos7系统上是会安装失败的,问题很多。 EL is short for Red Hat Enterprise Linux (EL). EL6 is the download for Red Hat 6.x, CentOS 6.x, and CloudLinux 6.x. EL5 is the download for Red Hat 5.x, CentOS 5.x, CloudLinux 5.x. EL7 is the download for Red Hat 7.x, CentOS 7.x, and CloudLinux 7.x. 我这里是el7
检查是否已经存在mysql
若存在卸载,避免安装时产生一些错误!
使用命令检查是否有安装mysql server
rpm -qa | grep mysql
普通删除模式:rpm -e mysql_libs
强力删除模式:rpm -e —nodeps mysql_libs
(如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除)
查看mysql配置信息
删除对应的配置文件等信息!
使用下面的命令查看是否有mysql用户和组
#cat /etc/passwd 查看用户列表
#cat /etc/group 查看用户组列表
如果没有就创建
groupadd 创建mysql组
我已经有crazyyang用户,并且我想让crazyyang用户分到mysql组
usermod -g mysql crazyyang
这里我先只把crazyyang分到mysql组,因此这里你可以根据自己的需求进行添加
上传安装包
使用xftp6软件上传安装包到/opt目录下
解压安装包
cd /opt
tar -xvf mysql-8.0.17-1.el8.x86_64.rpm-bundle.tar
解压后,得到如下文件
安装mysql
# rpm -ivh mysql-community-common-8.0.17-1.el7.x86_64.rpm
# rpm -ivh mysql-community-libs-8.0.17-1.el7.x86_64.rpm
# rpm -ivh mysql-community-libs-compat-8.0.17-1.el7.x86_64.rpm
# rpm -ivh mysql-community-devel-8.0.17-1.el7.x86_64.rpm
# rpm -ivh mysql-community-client-8.0.17-1.el7.x86_64.rpm
# rpm -ivh mysql-community-server-8.0.17-1.el7.x86_64.rpm
至此安装完成
提示错误:
与mariadb冲突,删除mariadb即可!
# rpm -qa | grep mariadb-libs
#rpm -e mariadb-libs-5.5.60-1.el7_5.x86_64 –-nodeps
依赖检测错误:
pkgconfig(openssl) 被 mysql-community-devel-8.0.17-1.el7.x86_64 需要
输入 # yum install openssl-devel
安装中出现的问题
警告:mysql-community-server-8.0.21-1.el8.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
错误:依赖检测失败:
/usr/bin/perl 被 mysql-community-server-8.0.21-1.el8.x86_64 需要
perl(Getopt::Long) 被 mysql-community-server-8.0.21-1.el8.x86_64 需要
perl(strict) 被 mysql-community-server-8.0.21-1.el8.x86_64 需要
问题原因
很简单,如错误信息显示,缺少perl.x86_64依赖,使用yum安装即可。(也有可能会发生提示缺少net-tools.x86_64,libaio.x86_64依赖)
找到对应的依赖包
yum search perl
yum search libaio
yum search net-tools
yum安装对应的安装包
yum -y install perl.x86_64
yum install -y libaio.x86_64
yum -y install net-tools.x86_64
启动mysql
systemctl start mysqld
启动成功后,可查看是否成功监听3306端口
查看 MySQL 运行状态
systemctl status mysqld
mysql开机启动
systemctl enable mysqld
查看mysql密码
grep 'temporary password' /var/log/mysqld.log
如果你什么都没有查到
那么默认密码是没有的
直接进入mysql
mysql -uroot -p
登录并修改密码
使用默认密码登录
进入mysql
mysql -uroot -p
密码
用该密码登录到服务端后,必须马上修改密码再执行一些数据库操作,不然会报如下错误:
mysql> select @@log_error;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql>
修改密码(注意,登录后的操作后面都最好要有;结尾)
*注意这里数据库为mysql5.7或以上password字段修改成了authentication_string;
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
如果你在这一步发生错误,那么请退出mysql后使用命令先更新一下数据库
mysql_upgrade -uroot -p
然后再次进入mysql设置root密码即可
如果还是不行的话,就使用下面方法
查看root密码
grep ‘temporary password’ /var/log/mysqld.log
如果密码设置太简单出现以下的提示
mysql> ALTER USER USER() IDENTIFIED BY ‘12345678’;
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
如何解决ERROR 1819 (HY000): Your password does not satisfy the current policy requirements呢? 这里直接提供解决方案文末有详细的说明
必须修改两个全局参数:
首先,修改validate_password_policy参数的值
mysql> set global validate_password_policy=0;
再修改密码的长度
set global validate_password_length=1;
再次执行修改密码就可以了
ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘root123’;(ALTER等可以写成小写)
退出 Mysql
quit 和 exit
MySQL使root可以远程登录
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
其中”.“代表所有资源所有权
“’root’@%”其中root代表账户名,%代表所有的访问地址
IDENTIFIED BY ‘root’,这个root是指访问密码。WITH GRANT OPTION允许级联授权。
刷新访问权限表(不要忘了)
mysql> FLUSH PRIVILEGES;
如果使用的docker安装的mysql8.1.数据库镜像,mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password。
需要执行以下命令
mysql8 一定要先创建用户再进行授权
# 一定要先创建用户
CREATE USER 'root'@'%' IDENTIFIED BY '1231231';
GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION;
# 如果创建中提示 ERROR 1396 (HY000): Operation CREATE USER failed for 'root'@'%'
# 则使用如下命令看看是否有该用户
select user from user;
# 如果有该用户,还是出现上面的错误就给我执行下面命令删除一下,重新创建
drop user 'root'@'%';
# 重新创建
CREATE USER 'root'@'%' IDENTIFIED BY '1231231';
GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION;
# 对远程连接进行授权,并且许级联授权
# GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION;
更改密码的加密规则:
# ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'SRNDxrhc=1314';
刷新权限
# FLUSH PRIVILEGES;
Navicat连接远程数据库报1251的错误
mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password。
解决问题方法有两种:
方法1.升级navicat驱动;(我官网下载目前最新的Navicat 12 for MySQL是可以直接连上的)
方法2.把mysql用户登录密码加密规则还原成mysql_native_password.
这里采用方法2解决,具体操作步骤如下:
如果依旧报错,就多试以下,或者在Navicat的root管理员重新创建用户
查看所有用户
mysql> select user,host from mysql.user;
用如下命令修改密码
mysql> ALTER USER 'guangyang'@'%' IDENTIFIED WITH mysql_native_password BY 'SRNDxrhc=1314';
刷新权限
mysql> FLUSH PRIVILEGES;