当前位置: 移动技术网 > IT编程>数据库>Mysql > MySql服务器安装与配置(rpm)教程

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

2018年03月05日  | 移动技术网IT编程  | 我要评论

一、检查系统中是否装有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 即可。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网