欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MySql服务器安装与配置(rpm)教程

程序员文章站 2022-04-27 20:38:31
一、检查系统中是否装有Mysql rpm -qa | grep mysql 或者:rpm -qa | grep -i mysql // 这个命令就会查看该操作系统上是否已经安装了...

一、检查系统中是否装有Mysql

rpm -qa | grep mysql 或者:rpm -qa | grep -i mysql // 这个命令就会查看该操作系统上是否已经安装了mysql数据库

[root@peipei3514 ~]# rpm -qa | grep -i mysql
mysql-libs-5.1.71-1.el6.x86_64

二、删除卸载原有的Mysql

通过 rpm -e 命令 或者 rpm -e –nodeps 命令来卸载掉,注意两个命令后面是你的mysql-libs-5.1.71-1.el6.x86_64名称版本号

[root@peipei3514 ~]#  rpm -e mysql // 普通删除模式
[root@peipei3514 ~]# rpm -e --nodeps mysql // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除

如果你不是通过rpm安装的肯定返回错误,说明没有rpm包。

[root@peipei3514 ~]# rpm -e --nodeps mysql
错误:未安装软件包 mysql 

如果是yum安装的我们使用下面的命令:

[root@peipei3514 ~]# yum -y remove mysql-libs-5.1.71-1.el6.x86_64

如果返回 You need to be root to perform this command。说明你需要root权限,在终端,输入su回车, 然后输入密码回车就行了!密码是不显示的。

[root@peipei3514 ~]# su
Password: 

再次执行删除命令,最后返回如果看到下面的信息:

......
Removed:
  mysql-libs.x86_64 0:5.1.71-1.el6                                              

Dependency Removed:
  cronie.x86_64 0:1.4.4-12.el6        cronie-anacron.x86_64 0:1.4.4-12.el6      
  crontabs.noarch 0:1.10-33.el6       postfix.x86_64 2:2.6.6-2.2.el6_1          
  sysstat.x86_64 0:9.0.4-22.el6      

Complete!

删除成功!

再次查看

[root@peipei3514 ~]# rpm -qa | grep mysql
[root@peipei3514 ~]# 

三、给CentOS添加rpm源

[root@peipei3514 ~]# cd /usr/local/src/
[root@peipei3514 src]# wget https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm
[root@peipei3514 src]# yum localinstall mysql57-community-release-el7-11.noarch.rpm -y

四、安装 mysql 服务

[root@peipei3514 src]# yum search mysql
[root@peipei3514 src]# yum install mysql-community-server.x86_64 -y

五、启动

[root@peipei3514 src]# systemctl start mysqld
[root@peipei3514 src]# systemctl status mysqld
● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since 日 2017-12-24 13:38:24 CST; 41min ago
     Docs: man:mysqld(8)
           https://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 10514 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
  Process: 10441 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
 Main PID: 10517 (mysqld)
   CGroup: /system.slice/mysqld.service
           └─10517 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid

12月 24 13:38:18 peipei3514 systemd[1]: Starting MySQL Server...
12月 24 13:38:24 peipei3514 systemd[1]: Started MySQL Server.

六、查看 mysql 随机密码

[root@peipei3514 src]# vim /var/log/mysqld.log

# 在日志文件中找到这样一行
2017-12-24T05:38:19.332201Z 1 [Note] A temporary password is generated for root@localhost: DGAreee6kM-E

注:Mysql 5.6及以后版本出处于安全考虑,root密码不为空。第一次启动后会有个初始化的过程,会产生root账户的随机密码。在/var/log/mysqld.log 。登陆上过后,进行正常操作会受限,提示你必须修改密码后才能进行操作。

七、初始化设置

[root@peipei3514 src]# mysql_secure_installation

运行mysql_secure_installation会执行几个设置:

为root用户设置密码(可以先看第八步); 删除匿名账号; 取消root用户远程登录; 删除test库和对test库的访问权限; 刷新授权表使修改生效。

通过这几项的设置能够提高mysql库的安全。建议生产环境中mysql安装这完成后一定要运行一次mysql_secure_installation

八、设置远程登录

1、设置 mysql 远程登录
mysql> GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
[root@peipei3514 src]# vim /etc/my.cnf

[client]
port=3306
2、开放防火墙端口
[root@peipei3514 src]# firewall-cmd --add-port=3306/tcp --permanent
success
[root@peipei3514 src]# firewall-cmd --reload
success

九、修改密码策略

查阅官方文档后发现有以下三种密码策略:

Policy Tests Performed
0 or LOW Length
1 or MEDIUM Length; numeric, lowercase/uppercase, and special characters
2 or STRONG Length; numeric, lowercase/uppercase, and special characters; dictionary file

当前密码策略默认为1,也就是 MEDIUM:

mysql> show VARIABLES like "%password%";
+---------------------------------------+--------+
| Variable_name                         | Value  |
+---------------------------------------+--------+
| default_password_lifetime             | 0      |
| disconnect_on_expired_password        | ON     |
| log_builtin_as_identified_by_password | OFF    |
| mysql_native_password_proxy_users     | OFF    |
| old_passwords                         | 0      |
| report_password                       |        |
| sha256_password_proxy_users           | OFF    |
| validate_password_check_user_name     | OFF    |
| 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      |
+---------------------------------------+--------+
14 rows in set (0.02 sec)

所以你更改密码的策略是 数字 小写字母 大写字母 特殊字符 长度至少8位 。

接下来修改默认密码策略(当然实际环境是不推荐修改为更低安全策略的):

mysql> set global validate_password_policy = 0;
Query OK, 0 rows affected (0.00 sec)

现在设置完默认密码策略后,就只有密码长度限制 了。默认为字符长度至少8位。其中:

validate_password_number_count:指定了密码中数据的长度; validate_password_special_char_count:指定了密码中特殊字符的长度; validate_password_mixed_case_count:指定了密码中大小字母的长度。

这些参数,默认值均为1,所以validate_password_length最小值为4,如果你显性指定validate_password_length的值小于4,尽管不会报错,但validate_password_length的值将设为4。

mysql> set global validate_password_length = 3;
Query OK, 0 rows affected (0.00 sec)

mysql> show VARIABLES  like "validate_password_length";
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| validate_password_length | 4     |
+--------------------------+-------+
1 row in set (0.00 sec)

如果修改了validate_password_number_count,validate_password_special_char_count,validate_password_mixed_case_count中任何一个值,则validate_password_length将进行动态修改。

MySQL 5.7 默认安装了 validate_password 插件。 所以多了以上步骤。

附1:通过my.cnf 配置文件设置密码策略的级别

[mysqld]
validate_password_policy=2

最后一行 validate_password_policy 设置mysql启动的时候密码策略级别。 如果设置为3 ,那么需要指定字典文件。

当然你也可以通过 my.cnf 配置文件关闭 validate_password 插件。

只需要添加一行:

validate_password = off

编辑完配置文件后,重启mysqld服务即可生效。

mysql> show VARIABLES  like "validate_password%";
+-----------------+---------+
| Variable_name   | Value   |
|-----------------+---------|
+-----------------+---------+
0 rows in set
Time: 0.008s

关闭validate_password插件后,就没有了validate_password的一些参数变量。

附2:修改 mysql 监听在 IPv4

MySQL 新版本默认监听在IPv6的地址族上。

[root@peipei3514 src]# netstat -tunpl -A inet6
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp6       0      0 :::22                   :::*                    LISTEN      991/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1093/master         
tcp6       0      0 :::3306                 :::*                    LISTEN      10640/mysqld        
udp6       0      0 :::16101                :::*                                804/dhclient        
udp6       0      0 ::1:323                 :::*                                644/chronyd         

更改为监听IPv4地址族,修改 my.cnf 添加一行配置:

bind-address = 0.0.0.0

重启mysqld 即可。