CentOS7安装mysql8.0

原文链接:

安装:https://www.jianshu.com/p/a355bbf11d07

密码策略: https://blog.csdn.net/Hello_World_QWP/article/details/79551789

CentOS7安装mysql8.0步骤

1.1 安装前清理工作(卸载mysql);
1.1.1 清理原有的mysql数据库;
使用以下命令查找出安装的mysql软件包和依赖包:

rpm -qa | grep -i mysql

显示结果如下:

mysql80-community-release-el7-1.noarch
mysql-community-server-8.0.11-1.el7.x86_64
mysql-community-common-8.0.11-1.el7.x86_64
mysql-community-libs-8.0.11-1.el7.x86_64
mysql-community-client-8.0.11-1.el7.x86_64
使用以下命令依次删除上面的程序

yum remove mysql-xxx-xxx-

删除mysql的配置文件,卸载不会自动删除配置文件,首先使用如下命令查找出所用的配置文件;

find / -name mysql

可能的显示结果如下:

/etc/logrotate.d/mysql
/etc/selinux/targeted/active/modules/100/mysql
/etc/selinux/targeted/tmp/modules/100/mysql
/var/lib/mysql
/var/lib/mysql/mysql
/usr/bin/mysql
/usr/lib64/mysql
/usr/local/mysql

根据需求使用以下命令 依次 对配置文件进行删除

rm -rf /var/lib/mysql

1.1.2 删除MariaDB的文件,

由于MySQL在CentOS7中收费了,所以已经不支持MySQL了,取而代之在CentOS7内部集成了mariadb,而安装MySQL的话会和MariaDB的文件冲突,所以需要先卸载掉MariaDB.

使用rpm 命令查找出要删除的mariadb文件;

rpm -qa | grep mariadb
可能的显示结果如下:
mariadb-libs-5.5.56-2.el7.x86_64  

rpm -e mariadb-libs-5.5.56-2.el7.x86_64 #删除上面的程序

可能出现错误提示如下:

依赖检测失败:

libmysqlclient.so.18()(64bit) 被 (已安裝) postfix-2:2.10.1-6.el7.x86_64 需要

libmysqlclient.so.18(libmysqlclient_18)(64bit) 被 (已安裝) postfix-2:2.10.1-6.el7.x86_64 需要

libmysqlclient.so.18(libmysqlclient_18)(64bit) 被 (已安裝) postfix-2:2.10.1-6.el7.x86_64 需要

使用强制删除:

rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64

至此就将原来有的mysql 和mariadb数据库删除了;

 

1.2 安装mysql

1.2.2 下载软件包rpm文件

文件下载到Centos/usr/local/mysql文件夹下;

cd /usr/local
mkdir mysql
cd mysql
wget  https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm

1.2.3 安装 yum repo文件并更新 yum 缓存;

rpm -ivh mysql80-community-release-el7-1.noarch.rpm

执行结果:

会在/etc/yum.repos.d/目录下生成两个repo文件mysql-community.repo mysql-community-source.repo

更新 yum 命令

yum clean all
yum makecache

1.2.4 使用 yum安装mysql

当我们在使用yum安装mysql时,yum默认会从yum仓库中安装mysql最新的GA版本;如何选择自己的版本;

第一步: 查看mysql yum仓库中mysql版本,使用如下命令

yum repolist all | grep mysql

可以看到 MySQL 5.5 5.6 5.7为禁用状态 而MySQL 8.0为启用状态;

第二步 使用 yum-config-manager 命令修改相应的版本为启用状态最新版本为禁用状态,根据需要安装的版本修改

yum-config-manager --disable mysql80-community #关闭8.0版本
yum-config-manager --enable mysql57-community #开启5.7版本

或者可以编辑 mysql repo文件,

cat /etc/yum.repos.d/mysql-community.repo 

将相应版本下的enabled改成 1 即可;

1.2.5 安装mysql 命令如下:

使用yum -y install mysql-community-server安装mysql时候提示:
The GPG keys listed for the “MySQL 5.7 Community Server” repository are already installed but they are not correct for this package.
Check that the correct key URLs are configured for this repository.

Failing package is: mysql-community-libs-compat-5.7.37-1.el7.x86_64
GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
原因是Mysql的GPG升级了,需要重新获取
使用以下命令即可
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
原文链接:https://blog.csdn.net/searlas/article/details/123393829

 


yum install mysql-community-server

1.2.6 开启mysql 服务

systemctl start mysqld.service

1.2.7 获取初始密码登录mysql

mysql在安装后会创建一个root@locahost账户,并且把初始的密码放到了/var/log/mysqld.log文件中;

cat /var/log/mysqld.log | grep password

使用初始密码登录mysql

mysql -u root -p  #会提示输入密码

修改初始密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';#注意位数和种类至少大+写+小写+符号+数字

忘记密码重置密码

[重置密码解决MySQL for Linux错误 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)]

vim /etc/my.cnf #注:windows下修改的是my.ini

skip-grant-tables# 在[mysqld]后面任意一行添加skip-grant-tables用来跳过密码验证的过程;设置完密码记得删除
systemctl restart mysqld.service #重启mysql ,就可以免密码登陆了,然后进行修改密码

在安装Mysql8.0.3过程中重置密码时报了这个错误, 原因是没有设置密码时需要在/etc/my.cnf中添加这段时才能操作mysql

#跳过密码验证

skip-grant-tables

但是添加完这句后操作mysql又报了这个错误, 这就成了一个死循环, 最后发现了解决办法,

这是因为权限设置了但还没有刷新导致的。 

先执行  

flush privileges;

 

免密登陆后,先将密码置空,在进行修改。否则会报错(浪费半天时间找原因)

update user set authentication_string="" where user=‘root’;

再执行sql语句, 成功了

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';

 

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

密码策略问题异常信息:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

如下图:

 

解决办法:

1、查看 mysql 初始的密码策略,
输入语句 “ SHOW VARIABLES LIKE 'validate_password%'; ” 进行查看,


2、首先需要设置密码的验证强度等级,设置 validate_password_policy 的全局参数为 LOW 即可,
输入设值语句 “ set global validate_password_policy=LOW; ” 进行设值,(有时是set global validate_password.policy=LOW;看自己的列表显示是什么酒怎么设置)

3、当前密码长度为 8 ,如果不介意的话就不用修改了,按照通用的来讲,设置为 6 位的密码,设置 validate_password_length 的全局参数为 6 即可,
输入设值语句 “ set global validate_password_length=6; ” 进行设值,(同上)
如下图:




4、现在可以为 mysql 设置简单密码了,只要满足六位的长度即可,
输入修改语句 “ ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; ” 可以看到修改成功,表示密码策略修改成功了!!!

如下图:




注:在默认密码的长度最小值为 4 ,由 大/小写字母各一个 + 阿拉伯数字一个 + 特殊字符一个,
只要设置密码的长度小于 3 ,都将自动设值为 4 ,如下图:




关于 mysql 密码策略相关参数;
1)、validate_password_length  固定密码的总长度;
2)、validate_password_dictionary_file 指定密码验证的文件路径;
3)、validate_password_mixed_case_count  整个密码中至少要包含大/小写字母的总个数;
4)、validate_password_number_count  整个密码中至少要包含阿拉伯数字的个数;
5)、validate_password_policy 指定密码的强度验证等级,默认为 MEDIUM;
关于 validate_password_policy 的取值:
0/LOW:只验证长度;
1/MEDIUM:验证长度、数字、大小写、特殊字符;
2/STRONG:验证长度、数字、大小写、特殊字符、字典文件;
6)、validate_password_special_char_count 整个密码中至少要包含特殊字符的个数;

 

 

1.2.8 在防火墙中开启3306端口

CentOS7默认使用的是firewall作为防火墙,我这里改为习惯常用的iptables防火墙

第一步:开启firewall3306端口防火墙

firewall-cmd --zone=public --list-ports 查看所有打开的端口
firewall-cmd --zone=public --add-port=80/tcp --permanent    开启一个端口,添加--permanent永久生效,没有此参数重启后失效
firewall-cmd --permanent --add-port=80/tcp  开放端口80
firewall-cmd --permanent --remove-port=80/tcp   移除端口80
firewall-cmd --reload   重启防火墙,修改后重启防火墙生效

第五步: 重启防火墙

systemctl enable iptables.service
systemctl start iptables.service

1.2.9 将mysql 服务加入开机启动项,并启动mysql进程

systemctl enable mysqld.service
systemctl start mysqld.service

常用mysql服务命令:

mysql -u username -p #登录mysql
quit #退出mysql 
systemctl start mysqld.service  #启动mysql
systemctl stop mysqld.service #结束
systemctl restart mysqld.service #重启
systemctl enable mysqld.service #开机自启
select version(); #查看mysql版本

2.1 开启mysql远程服务:

外网 Navicat 连接 Mysql

2.1.1 修改mysql数据库下的user表中host的值

可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"登录mysql数据库 执行如下命令:

mysql -u root -p
use mysql;
update user set host='%' where user='root';

2.1.2 使用授权的方式

赋予任何主机访问数据的权限(有时会报错,那就多执行

FLUSH PRIVILEGES;命令,再不行就自行百度查一下原因,基本都是相同操作再来一遍。

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION;
mysql>FLUSH PRIVILEGES;

如果想myuser用户使用mypassword密码从任何主机连接到mysql服务器的话。

GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%'IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器,并使用mypassword作为密码

GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3'IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

2.2 在使用 Navicat for Mysql连接mysql 8.0时会报如下错误:

Authentication plugin 'caching_sha2_password' cannot be loaded:

mysql8.0 引入了新特性 caching_sha2_password;这种密码加密方式客户端不支持;客户端支持的是mysql_native_password 这种加密方式;

我们可可以查看mysql 数据库中user表的 plugin字段;

可以使用命令将他修改成mysql_native_password加密模式:

update user set plugin='mysql_native_password' where user='root';

再用Navicat链接 就可以链接成功;


安装过程中涉及到的Linux命令学习;
3.1 rpm

3.2 putty 上传文件 pscp命令;

在window机上CD进入pttty安装目录:
    cd :\program files (x86)\Putty
将本地文件拷贝到Linux上:pscp 文件 用户名
    pscp hello.txt root@192.168.145.135:/tmp/userfile/
将本地文件夹 拷贝到Linux上:pscp  -r 目录 用户名
   pscp -r c:\file root@10.43.65.98:/root/testFolder  
将Linux上的文件\root\test.txt拷贝到本地C盘src文件夹,如下:
   pscp root@abc_pc:/root/test.txt  C:\src  

3.3 修改防火墙文件/etc/sysconfig/iptables

3.4 systemctl命令

授权外网登陆
1。 改表法。

可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改成"%"

Sql代码


  1. mysql -u root -pvmwaremysql>use mysql;  

  2. mysql>update user set host = '%' where user = 'root';  

  3. mysql>select host, user from user; 

  1. 授权法。

例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。

Sql代码

GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH

GRANT OPTION;  

FLUSH   PRIVILEGES; 

如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器的dk数据库,并使用mypassword作为密码

Sql代码

GRANT ALL PRIVILEGES ON dk.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 

'mypassword' WITH GRANT OPTION; 

FLUSH   PRIVILEGES; 

注意授权后必须FLUSH PRIVILEGES;否则无法立即生效。

3
另外一种方法.

在安装mysql的机器上运行:

1、d:\mysql\bin\>mysql -h localhost -u root 

//这样应该可以进入MySQL服务器

2、mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION 

//赋予任何主机访问数据的权限

3、mysql>FLUSH PRIVILEGES 

//修改生效

4、mysql>EXIT 

//退出MySQL服务器

这样就可以在其它任何的主机上以root身份登录啦!

其它:

mysql> grant all privileges on *.* to 'energy_pf'@'192.168.2.65' identified by 'energy_pf' with grant option;

Query OK, 0 rows affected (0.00 sec)

mysql> plush privileges; #立即生效

允许用户energy_pf从ip为192.168.2.65的主机连接到mysql服务器的任意数据库(.),并使用energy_pf作为密码

强烈注意设置强密码,设置简单密码太容易被攻击劫持了







posted @ 2020-08-10 10:46  我看见的世界  阅读(13855)  评论(3编辑  收藏  举报