MySQL数据库安装

安装环境: 腾讯云:Centos7系统,1核1GB内存,1M带宽,磁盘50G

一、安装前准备

引言:Centos7版本将MySQL数据库软件从默认的程序列表中移除,使用mariadb代替。在使用yum进行安装前需要先安装yum源

下载yum源并进行安装

step1:通过官网获取yum下载源,然后使用wget工具进行获取。

centos7保存终端内容 centos7保留数据安装_centos


step 2:将官网生成的下载链接复制到wget命令后

wget  https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm

centos7保存终端内容 centos7保留数据安装_腾讯云_02


step 3:安装仓库

rpm -ivh mysql57-community-release-el7-11.noarch.rpm

centos7保存终端内容 centos7保留数据安装_centos7保存终端内容_03

安装MySQL数据库

注:安装MySQL数据库(默认安装的是最新版本5.7,如果考虑内存,可以安装5.6,相对于5.7版本,5.6安装包会小很多)

step 1:安装MySQL
在安装MySQL之前需要确保系统中没有安装MySQL或者MySQL相关文件被清理干净。可通过如下代码进行查看:

> rpm -e --nodeps mariadb-libs
>  rpm -qa|grep -i mysql find / -name mysql
> find / -name my.cnf

假如有对应文件存在,则全部删除

rm -rf xxx xxx 例:rm -rf /var/log/mysql /var/log/mysql1 ..

在确保系统中没有关于MySQL的相关文件后在执行安装MySQL命令

yum install mysql-community-server

centos7保存终端内容 centos7保留数据安装_mysql_04

补充: 在MySQL
Yum存储库中(http://repo.mysql.com/yum/),MySQL社区服务器的不同版本系列托管在不同的子仓库中。默认情况下,最新的GA系列(目前为MySQL
5.7)的子仓库已启用(enabled),默认情况下禁用所有其他系列(例如,MySQL 5.6系列)的子仓库(disabled)。

使用 yum repolist all | grep mysql 可以查看MySQL Yum存储库中的所有子仓库

centos7保存终端内容 centos7保留数据安装_mysql_05


注:由上图可见5.7版本标记为“启用”,默认“启用”,所有,若想安装最新版本的mysql稳定版本可以之间安装,无需配置

yum install mysql-community-server

若想用其他版本的mysql,需要进行配置,如使用mysql 56版本,执行如下命令:(Centos7支持yum-config-manager命令)

yum-config-manager –disable mysql57-communityyum-config-manager –enable mysql56-community

在任何时间只能启用一个版本系列的子链接。当启用了多个版本系列的子仓库时,Yum将使用最新的系列。查看已经启用的子仓库可以使用一下命令:

yum repolist enble | grep mysql

注:安装过程中出现了bug,错误如下:
执行yum -y install mysql-community-server安装报错

All matches were filtered out by modular filtering for argument:
mysql-community-server Error: Unable to find a match:
mysql-community-server

centos7保存终端内容 centos7保留数据安装_centos7保存终端内容_06


解决方法:先执行 yum module disable mysql,然后再执行yum -y install mysql-community-server

Step 2:启动MySQL服务
刚刚完成mysql的安装,mysql默认是没有启动的,可以通过下面命令进行查看

查看mysql服务状态

systemctl status mysqld.service

查看当前的mysql服务器状态是关闭的

centos7保存终端内容 centos7保留数据安装_mysql_07


启动mysql服务后,查看mysql服务状态

systemctl start mysqld.service
 systemctl status mysqld.service

centos7保存终端内容 centos7保留数据安装_sql_08

补充
关闭mysql服务:systemctl stop mysqld.service 重启mysql服务:systemctl restart mysqld.service

Step 3:增强MySQL

mysql在安装完成之后,默认情况下,MySQL将绑定到localhost(127.0.0.1)。允许在公共IP上不受限制地访问MySQL是不推荐的,一般来说会去修改/etc/my.cnf配置文件中的bind-address参数来更改其监听的地址。如果决定将MySQL绑定到公共IP,应该实现只允许来自特定IP地址的连接的防火墙规则

mysql5.7在yum安装的时候已经默认安装该安全增强,但是需要进行密码的修改;而mysql5.6是需要进行mysql增强的设置的。

mysql 5.7修改密码:

1.查看临时密码
首次安装mysql后,会分配一个临时密码,通过如下命令进行查看

grep "password" /var/log/mysqld.log

centos7保存终端内容 centos7保留数据安装_腾讯云_09


2.登录mysql

mysql -uroot -p 输入临时密码

centos7保存终端内容 centos7保留数据安装_centos7保存终端内容_10


3.修改密码

直接进行密码的修改,会由于密码的安全度不满足报错:

alter user 'root'@'localhost' identified by '123456';

错误如下:

centos7保存终端内容 centos7保留数据安装_腾讯云_11


若是修改简单的密码,可执行如下操作进行规避这个错误:

set global validate_password_policy=0;
set global validate_password_length=1;
修改完成后,进行密码的修改:
alter user 'root'@'localhost' identified by '123456'

centos7保存终端内容 centos7保留数据安装_sql_12


密码修改完成,可使用新密码进行登录。

知识点补充:MySQLvalidate_password_policy策略介绍

*MySQL默认安装了密码安全检查插件(validate_password),默认密码检查策略要求密码必须包含:大小写字母、数字和特殊符号,并且长度不能少于8位。修改密码时新密码是否符合当前的策略,不满足则会提示ERROR
1819 (HY000): Your password does not satisfy the current policy requirements错误

centos7保存终端内容 centos7保留数据安装_sql_13

0 or LOW

:校验级别最低,只校验密码长度,只要长度跟validate_password_length一样即可,默认长度是8位。

1 or MEDIUM

:满足validate_password_policy=0,并且必须含有数字,小写或大写字母,特殊字符。

2 or STRONG

:满足0,1的要求,且密码中任意连续4个(或4个让上)字符不得是字典中的单词

修改validate_password_policy set global validate_password_policy=0;

centos7保存终端内容 centos7保留数据安装_sql_14

查询修改后的validate_password_policy
select @@validate_password_policy;

centos7保存终端内容 centos7保留数据安装_mysql_15

查看密码长度validate_password_length的值

select @@validate_password_length;

centos7保存终端内容 centos7保留数据安装_mysql_16

> validate_password_length参数默认为8,它有最小值的限制,最小值为:
 validate_password_number_count
 • validate_password_special_char_count
 • validate_password_mixed_case_count * 2
 不管设置validate_password_length=1,还是2,3,4 ,密码长度实际值都是4。超过4后为设置的值。
mysql5.7.x中密码控制的变量
Policy Tests Performed默认值说明validate_password_policymedium用于验证validate_password的验证策略validate_password_length8密码长度的最小值(最小值4)validate_password_number_count1密码中数字最少个数validate_password_mixed_case_count1密码中大小写字符最少个数validate_password_special_char_count1密码中特殊字符最小个数validate_password_dictionary_file字典文件

mysql5.6安全增强

程序mysql_secure_installation 允许执行重要操作,如设置root密码,删除匿名用户。始终运行它以确保mysql5.6安装:

mysql_secure_installation

centos7保存终端内容 centos7保留数据安装_centos_17

Step 4:数据库授权

数据库没有授权,只支持localhost本地访问。可通过如下命令进行授权:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;授权后,刷新
flush privileges;

centos7保存终端内容 centos7保留数据安装_centos7保存终端内容_18


Step 5:设置开启自启动

systemctl enble mysqld
systemctl daemon-reload

centos7保存终端内容 centos7保留数据安装_腾讯云_19


Step 6:修改MySQL字符集

修改mysql字符集字符设置应用于服务器范围,并应用于任何应用程序创建的数据库的默认值,以及在这些数据库中创建的表。

修改MySQL的配置文件my.cnf,文件默认位置:/etc/my.cnf

vi /etc/my.cnf
 在[mysqld]结束位置添加:
character_set_server=utf8
collation-server=utf8_general_ci

centos7保存终端内容 centos7保留数据安装_mysql_20

Step 7:重启MySQL,检查生效

重启mysql服务

***停止命令:***

systemctl stop mysqld.service

***启动命令:*** systemctl start mysqld.service

***查看状态:*** systemctl status mysqld.service

***查看修改后的mysql字符集*** show variables like ‘character_set_%’

重启前:

centos7保存终端内容 centos7保留数据安装_centos_21


重启后:

centos7保存终端内容 centos7保留数据安装_centos_22


Step 8:远程连接MySQL

远程连接mysql:

Mysql账户登录权限相关的知识:

1、 mysql服务器中用户的信息保存在数据库名为mysql的数据库中的user表中,输入下列命令可查看用户的登录权限。

select distinct concat(‘User:”’,user,”’@”’,host,”’;’) as query from mysql.user;

centos7保存终端内容 centos7保留数据安装_mysql_23


2、 创建远程连接用户 wzg密码 123456任何主机上访问数据库 dbTest该数据库的所有操作权限

登录mysql:

mysql -uroot –p
mysql> create database dbTest;
mysql> create user ‘wzg’@’%’ identified by ‘123456’;

报错:

centos7保存终端内容 centos7保留数据安装_centos_24


修改密码校验级别:

mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=1;重新创建用户:
mysql> create user ‘wzg’@’%’ identified by ‘123456’;

centos7保存终端内容 centos7保留数据安装_centos7保存终端内容_25


给新建用户授权:

grant all on dbTest.* to 'wzg' identified by '123456';

centos7保存终端内容 centos7保留数据安装_centos_26

知识点补充:
create user ‘xxx’ @ ’%’ identified by‘xxx’; xxx分别表示用户名和密码,这里的 % 百分号表示任意IP主机
create user ‘xxx’ @ ’139.199.201.55’ identified by‘xxx’; %百分号可以用具体的IP地址代替,那么该用户就只能从该指定的ip主机上连接mysql服务器
create user ‘xxx’ @ ’localhost’ identified by ‘xxx’; 标记为localhost那么就只能从服务器上访问mysql数据库,禁止远程连接

grant all 表示授予所有权限,但是不建议授予所有权限。对于普通用户,建议使用GRANT SELECT,INSERT,UPDATE,DELETE
on dbTest.*表示授予的范围为dbchen数据库的所有表。当然你也可以指定某个特定的表,例如仅指定student表 on dbchen.student

mysql> flush privileges; //刷新一下
对于用户的增删改以及权限控制,实际上都是操作mysql.user这张表,按正常的来就可以了