天天看点

rpm方式安装 mysql5.7.29一、rpm方式安装 mysql5.7.29二、更改mysql数据存储目录

一、rpm方式安装 mysql5.7.29

1.下载mysql5.7.29的rpm安装包

     rpm的mysql包,安装起来简单,解压版的mysql还需要做许多配置,稍有不慎就会出错!!!

下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads

2.上传mysql安装包到centos7的系统下

3.安装依赖

3.1 查看linux上是否已经安装了mysql,有则卸载。

一般centos7默认安装了mariadb,这里把它卸载。

查看:[[email protected] bin]# rpm -qa|grep mariadb

卸载:[[email protected] bin]# rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64

3.2 安装mysql5.7所需要的依赖

[[email protected] src]# yum install libaio

[[email protected] src]# yum install perl

[[email protected] src]# yum install net-tools

4.安装mysql5.7

4.1 解压mysql5.7安装包

[[email protected] src]# tar -xvf mysql-5.7.24-1.el7.x86_64.rpm-bundle.tar

解压完后会有很过rpm文件,这些就是我们需要安装的。

4.2 安装mysql5.7

[[email protected] src]# rpm -ivh mysql-community-common-5.7.24-1.el7.x86_64.rpm

[[email protected] src]# rpm -ivh mysql-community-libs-5.7.24-1.el7.x86_64.rpm

[[email protected] src]# rpm -ivh mysql-community-client-5.7.24-1.el7.x86_64.rpm

[[email protected] src]# rpm -ivh mysql-community-server-5.7.24-1.el7.x86_64.rpm

如果有报错的情况 可以加 --force --nodeps 参数

如:[[email protected] src]# rpm -ivh mysql-community-libs-5.7.24-1.el7.x86_64.rpm --force --nodeps

4.3 查看mysql5.7的状态,没有启动则把mysql启动

查看mysql启动状态

[[email protected] src]# service mysqld status

出现下面这个death就是没有启动,新装的第一次是没有启动的。

启动mysql       active(running)代表启动成功

[[email protected] src]# service mysqld start

4.4 修改密码

查看临时密码:得知临时密码就是如图

[[email protected] src]# grep password /var/log/mysqld.log

用临时密码登录mysql

[[email protected] src]# mysql -uroot –p

修改成新的密码

mysql> set password = password("Admin123&");

有时候,只是为了自己测试,不想密码设置得那么复杂,譬如只想设置root的密码为123456。

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456');

但是会报错:

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123');
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
           

【原因】

原来MySQL5.6.6版本之后增加了密码强度验证插件validate_password,相关参数设置的较为严格。

使用了该插件会检查设置的密码是否符合当前设置的强度规则,若不满足则拒绝设置。影响的语句和函数有:create user,grant,set password,password(),old password。

【解决】

mysql> select @@validate_password_policy;
+----------------------------+
| @@validate_password_policy |
+----------------------------+
| MEDIUM                     |
+----------------------------+
1 row in set (0.00 sec)
 
 
mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| 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      |
+--------------------------------------+--------+
6 rows in set (0.08 sec)
           

1) 查看mysql全局参数配置

该问题其实与mysql的validate_password_policy的值有关。

查看一下msyql密码相关的几个全局参数:

2)参数解释

validate_password_dictionary_file

插件用于验证密码强度的字典文件路径。

validate_password_length

密码最小长度,参数默认为8,它有最小值的限制,最小值为:validate_password_number_count + validate_password_special_char_count + (2 * validate_password_mixed_case_count)

validate_password_mixed_case_count

密码至少要包含的小写字母个数和大写字母个数。

validate_password_number_count

密码至少要包含的数字个数。

validate_password_policy

密码强度检查等级,0/LOW、1/MEDIUM、2/STRONG。有以下取值:

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,所以刚开始设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。

validate_password_special_char_count

密码至少要包含的特殊字符数。

3)修改mysql参数配置

mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.05 sec)
 
mysql> 
mysql> 
mysql> set global validate_password_mixed_case_count=0;
Query OK, 0 rows affected (0.00 sec)
 
mysql> set global validate_password_number_count=3;
Query OK, 0 rows affected (0.00 sec)
 
mysql> set global validate_password_special_char_count=0;
Query OK, 0 rows affected (0.00 sec)
 
mysql> set global validate_password_length=3;
Query OK, 0 rows affected (0.00 sec)
 
mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| validate_password_dictionary_file    |       |
| validate_password_length             | 3     |
| validate_password_mixed_case_count   | 0     |
| validate_password_number_count       | 3     |
| validate_password_policy             | LOW   |
| validate_password_special_char_count | 0     |
+--------------------------------------+-------+
6 rows in set (0.00 sec)
           

4)修改简单密码:

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123');
Query OK, 0 rows affected, 1 warning (0.00 sec)
           

4.5 开启远程连接,允许远程连接数据库

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY ' Admin123& ' WITH GRANT OPTION;

4.6 配置mysql的配置文件my.cnf(用默认的也行)

打开配置文件my.cnf

[[email protected] src]# vi /etc/my.cnf

在[mysqld]下面配置几行

lower_case_table_names=1       #配置表名不区分大小写 1:不区分大小写 0:区分大小写 这行必须配置 默认表名是区分大小写的,不利于开发

character-set-server=utf8          #设置为默认编码为utf8

init_connect='SET NAMES utf8'

max_connections=1024             #设置最大连接数

重启mysql 重启配置才能生效

[[email protected] src]# service mysqld restart

4.7 防火墙开启端口

到这其实mysql已经安装和配置好,但是centos7的开了防火墙,外面还是访问不到mysql的,所以还要开端口3306(或者把防火墙关掉也行,生产环境勿用)

关闭防火墙

[[email protected] src]#  systemctl stop firewalld

至此,centos7下安装mysql5.7.29完毕.

二、更改mysql数据存储目录

这里更改mysql的目录为/data

mkdir /data

chmod -R 777 /data

systemctl stop mysqld

cp -a /var/lib/mysql/* /data/

chown -R mysql:mysql /data/mysql

修改配置文件

vi /etc/my.cnf

datadir=/home/data/mysql

重启mysql

systemctl restart mysqld

查看mysql的存储目录,需要进入MySQL里面

mysql> show variables like '%datadir%';

+---------------+--------+

| Variable_name | Value  |

+---------------+--------+

| datadir      | /data/ |

+---------------+--------+

1 row in set (0.00 sec)

作者:Jenwey

链接:https://www.jianshu.com/p/b206e12d74c7

来源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。