CentOS7下安装MySql

写在前面:每次重装系统后安装MySQL,明明都是同一个iso,还是会出现不一样的问题。

1、卸载自带的MySQL或mariadb

查看mariadb

rpm -qa|grep mariadb

结果

# 如果有文件需要卸载会显示对应文件,卸载即可
mariadb-libs-5.5.56-2.el7.x86_64
# 如果没有文件则显示为空

卸载

rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64

查看MySQL,一般是没有的,只有mariadb

rpm -qa|grep mysql

卸载

rpm -e --nodeps 文件名

再次确认是否卸载

rpm -qa|grep mariadb
rpm -e --nodeps mysql80-community-release-el7-7.noarch
rpm -e --nodeps mysql-community-server-8.0.33-1.el7.x86_64
rpm -e --nodeps mysql-community-client-plugins-8.0.33-1.el7.x86_64
rpm -e --nodeps mysql-community-client-8.0.33-1.el7.x86_64
rpm -e --nodeps mysql-community-libs-8.0.33-1.el7.x86_64
rpm -e --nodeps mysql-community-common-8.0.33-1.el7.x86_64
rpm -e --nodeps mysql-community-icu-data-files-8.0.33-1.el7.x86_64


rpm -e --nodeps mysql-community-client-plugins-8.0.35-1.el7.x86_64
rpm -e --nodeps mysql-community-common-8.0.35-1.el7.x86_64
rpm -e --nodeps mysql-community-icu-data-files-8.0.35-1.el7.x86_64


rpm -e --nodeps mysql-community-libs-8.0.35-1.el7.x86_64
rpm -e --nodeps mysql-community-icu-data-files-8.0.35-1.el7.x86_64
rpm -e --nodeps mysql-community-client-plugins-8.0.35-1.el7.x86_64
rpm -e --nodeps mysql-community-server-8.0.35-1.el7.x86_64
rpm -e --nodeps mysql-community-common-8.0.35-1.el7.x86_64
rpm -e --nodeps mysql-community-client-8.0.35-1.el7.x86_64

2、提前安装需要用到的工具

2.1、安装yum

2.2、安装vim

yum install vim -y

2.3、安装wegt

yum install -y wget

另一个应用程序是:PackageKit
内存:156 M RSS (644 MB VSZ)
已启动: Tue Nov 7 15:54:12 2023 - 00:15之前
状态 :运行中,进程ID:2503

rm -f /var/run/yum.pid

3、安装MySQL

  • mysql-community-server(服务端)
  • mysql-community-client(客户端)
  • mysql-community-client-plugins
  • mysql-community-common(错误消息、字符集等)
  • mysql-community-libs (客户端库文件)
  • mysql-community-libs-compat

用wget 下载后安装

wget  http://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm

安装MySQL官方的 Yum Repository

yum install mysql80-community-release-el7-7.noarch.rpm

安装MySQL服务器

yum install mysql-community-server

启动Myqsl服务

systemctl start mysqld.service

查看运行状态

systemctl status mysqld.service
service mysqld status

查看MySQL版本

# 用密码进入是会显示版本,我的版本是8.0.32
mysql -V
## 也可以打印详细信息

4、设置MySQL

4.1、设置密码

获取临时密码

grep 'temporary password' /var/log/mysqld.log
# 或者,两句的结果都是一样的
grep "password" /var/log/mysqld.log

结果

A temporary password is generated for root@localhost: >a6Ttpg#qpcz

登录方法(利用原始的密码进入)

mysql -uroot -powDsnCkJg4>g

mysqladmin -u root -h 127.0.0.1 -p password

​ 如果当前进不去的话,需要使用先输入mysql -uroot -p,再输入临时密码。

如果还是进不去的话,可能是除了某种原因。此时可以利用MySQL跳过验证的方式登录。

1、cd etc
2、vim my.cnf
3、找到[mysqld]字段,新增skip-grant-table,保存
4、重启MySQL服务,systemctl restart mysqld,
service mysqld restart

​ 此时的密码是需要密码满足至少要有一个大写字母,一个小写字母,一个数字,一个特殊符号,并且长度至少为八位。

​ 可能第一次登录需要重新设置密码(建议用MySQL提供的默认密码先设置好,等后面再修改为123456)

ALTER USER 'root'@'localhost' IDENTIFIED BY '>a6Ttpg#qpcz';

我们将密码设置为校验级别低,长度只有6位的密码,方便我们学习。

如下命令查看mysql默认密码复杂度:

SHOW VARIABLES LIKE 'validate_password%';

返回结果:

+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password.changed_characters_percentage | 0      |
| validate_password.check_user_name    | ON     |#判断账号密码进行比较,on则不能设置为相同值
| validate_password.dictionary_file    |        |#用于检查密码的字典文件的路径名
| validate_password.length             | 8      |#需要密码的最少字符数
| validate_password.mixed_case_count   | 1      |#密码混合强度
| validate_password.number_count       | 1      |#密码最小字符
| validate_password.policy             | MEDIUM |#密码强度
| validate_password.special_char_count | 1      |#密码最小非字母数字字符
+--------------------------------------+--------+
7 rows in set (0.02 sec)

如需修改密码复杂度参考如下命令:

set global validate_password.policy=LOW;

修改密码长度

set global validate_password.length=6;

​ 值得注意的是,有版本的字段是validate_password_length,而有的是validate_password.length,大家在设置的时候需要根据自己的需要进行修改

设置完密码策略后,刷新数据库权限

flush privileges;

查看数据库密码策略

SHOW VARIABLES LIKE 'validate_password%';

结果

+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| validate_password.check_user_name    | ON    |
| validate_password.dictionary_file    |       |
| validate_password.length             | 6     |修改完成
| validate_password.mixed_case_count   | 1     |
| validate_password.number_count       | 1     |
| validate_password.policy             | LOW   |
| validate_password.special_char_count | 1     |
+--------------------------------------+-------+

修改完成。

​ 此时可以重新设置简单的密码,一旦修改后,初始化密码虽然查得到,但是进入MySQL服务的密码将是为你自定义的密码’123456’

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

4.2、设置开机自启动

systemctl enable mysqld.service;

4.3、设置远程连接

5版本

执行以下命令开启远程访问限制(注意:密码要写对 要不然远程链接不上 下面命令开启的所有的,如要开启单个的,用IP代替%):

grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
或
grant all privileges on *.* to root @ '%' identified by '123456';    


注:123456是你设置你的mysql远程登录密码。

  • GRANT:赋权命令
  • ALL PRIVILEGES:当前用户的所有权限
  • ON:介词
  • .:当前用户对所有数据库和表的相应操作权限
  • TO:介词
  • ‘root’@’%’:权限赋给root用户,所有ip都能连接
  • IDENTIFIED BY ‘123456’:连接时输入密码,密码为123456
  • WITH GRANT OPTION:允许级联赋权

然后再刷新

flush privileges
8版本
方式一

输入以下语句,进入mysql库:

use mysql

更新域属性,'%'表示允许任意IP地址访问:

update user set host='%' where user ='root';

执行以上语句之后再执行:

FLUSH PRIVILEGES;

再执行授权语句:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION;
方式二
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password'WITH GRANT OPTION;

这一行命令来设置用户权限,必须分两步来实现设置用户权限【先创建用户、在对该用户分配用户权限】,最后刷新权限

mysql> CREATE USER 'root'@'%' IDENTIFIED BY 'password';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;

4.4、设置防火墙

firewall-cmd --zone=public --add-port=3306/tcp --permanent

Warning: ALREADY_ENABLED: 3306:tcp(说明3306端口通过成功)

重启防火墙

firewall-cmd --reload

5、测试连接

用ifconfig找到CentOS7的IP

利用数据库可视化工具连接MySQL即可,将localhost换为CentOS7的IP,其他的不变

6、异常

6.1、初始化密码可能遇到的异常

  • ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
    • 密码不符合密码设置策略
  • ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
    • 执行下一步前请设置密码

运行SHOW VARIABLES LIKE 'validate_password%';查看mysql默认密码复杂度时会报ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.异常,这是需要你在执行下一句语句前重设你的密码;继续输入ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';则会出现ERROR 1819 (HY000): Your password does not satisfy the current policy requirements提示你密码不符合要求;运行set global validate_password.policy=LOW;设置密码策略还是在提示需要重新设置密码

ALTER USER 'root'@'localhost' IDENTIFIED BY 'et+cZllT7jtw1';

执行该语句后,再按上面顺序继续设置密码

6.2、远程连接可能遇到的问题

  • ERROR 1410 (42000): You are not allowed to create a user with GRANT
  • ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘identified by ‘123456’ with grant option’ at line 1
    • 设置远程连接可能出现语法错误

选择 mysql 数据库

use mysql;

查看mysql 数据库中存储的用户信息的 user 表。

select host,user,authentication_string,plugin from user;

执行完命令后显示一个表格, root 用户的 host默认显示的 localhost,说明只支持本地访问,不允许远程访问。

更改 host 的默认配置

update user set host='%' where user='root';

刷新更新

flush privileges;

上述步骤完成之后,相当于完成了设置远程连接,回去上述步骤执行下一步。

6.3、Failed to start mysqld.service: Unit not found

这个异常的原因是因为安装MySQL的部分操作没有完全执行,只需要重新执行一边一句即可。

6.4、如果需要创建账号才可以进行远程连接

运行这条语句会报错

grant replication slave on *.* to 'xh'@'%' identified by '123456';

换个方法

create user xh identified by '123456';
grant select ,replication slave, replication client on *.* to 'xh'@'%';
grant all privileges on *.* to 'xh'@'%';
flush privileges;

6.5、“MySQL 8.0 Community Server“ 的 GPG 密钥已安装,但是不适用于此软件包

源 “MySQL 8.0 Community Server” 的 GPG 密钥已安装,但是不适用于此软件包。请检查源的公钥 URL 是否配置正确。 失败的软件包是:mysql-community-client-8.0.36-1.el7.x86_64 GPG 密钥配置为:file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022, file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

 sudo yum install mysql-server --nogpgcheck

文章参考或者引用

CentOS7安装MySQL8

CentOS7安装MySQL8的超级详细教程(无坑!)

CentOS7 安装mysql8

CentOS7安装MySQL(完整版)

CentOS7安装MySQL(完整版)

手把手教你CentOS7安装MySql(超详细)

MySQL修改密码报错ERROR 1396 (HY000): Operation ALTER USER failed for ‘root‘@‘localhost‘

Centos7安装vim

Centos7下安装MySQL详细步骤

LINUX 开启防火墙

Centos 7 安装 wget

Cenots7安装vim

CentOS7–yum安装

重学Mysql之Mysql8.0修改密码策略

使用Systemctl命令来管理系统服务

Centos7设置mysql开机自启

enable mysqld systemctl_使用systemctl命令启动和关闭mysql

with grant option作用

centos7防火墙配置详细

Centos 7防火墙开放端口方法

解决源 “MySQL 8.0 Community Server“ 的 GPG 密钥已安装,但是不适用于此软件包。请检查源的公钥 URL 是否配置正确。_源 “mysql 8.0 community server” 的 gpg 密钥已安装,但是不适用于此-CSDN博客

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐