centos通过gz包安装mysql,CentOS7通过tar.gz包安装mysql-5.7.25

CentOS7通过tar.gz包安装mysql-5.7.25

1、准备工作

1> Centos7最小化安装是不自带MySQL的(因为收费了),但默认内部集成MariaDB,可以直接yum install -r mariadb-server方式。

2> 卸载自带的MariaDB

- 查看进程:

- 杀死进程:pkill -9 mysqld

- 查看是否已安装MariaDB:rpm -qa|grep mariadb

- 如果存在,强制卸载MariaDB:rpm -e --nodeps [mariadb包或相关模块]

- rpm -qa|grep mariadb检查是否卸载干净

3> 检查是否已安装mysql

rpm -qa|grep -i mysql

2、安装依赖libaio

Linux下的一个异步非阻塞接口,它提供了以异步非阻塞方式来读写文件的方式,读写效率比较高。

1> 查看是否安装libaio

ps -aux|grep libaio

2> 若没有,yum安装即可

yum install -y libaio

yum install -y cmake make gcc gcc-c++ libaio ncurses ncurses-devel

3、准备mysql包

1> 自行下载mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz

2> 解压自行下载mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz

tar zxvf mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz -C /usr/local

3> 修改目录名称(个人习惯,可以不改)

[root@xqk ~]# cd /usr/local/

[root@xqk ~]# mv mysql-5.7.25-linux-glibc2.12-x86_64 mysql

4、新增mysql组,mysql用户(不存在的情况下)

1> 添加mysql组

[root@xqk ~]# groupadd mysql

2> 添加用户

[root@xqk ~]# useradd mysql -g mysql

5、安装mysql

[root@xqk local]# cd /usr/local/mysql/

[root@xqk mysql]# pwd

/usr/local/mysql

1> 修改当前目录为mysql用户拥有

[root@xqk mysql]# chown -R mysql:mysql ./

2> 初始化数据库,注意记录临时密码,后续登录使用,过程中请忽略Warning

[root@xqk mysql]# bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

3> 创建RSA private key

[root@xqk mysql]# bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data

4> 修改/usr/local/mysql/data目录拥有者为mysql用户

[root@xqk mysql]# chown -R mysql:mysql data

6、编辑my.cnf文件

tar包解压之后,support-files文件夹中并没有my.cnf文件,直接vim编辑,并添加一下内容:

[root@xqk support-files]# vim /etc/my.cnf

[mysqld]

port=3306

user=mysql

basedir=/usr/local/mysql

datadir=/usr/local/mysql/data

socket=/tmp/mysql.sock

character-set-server = utf8mb4

collation-server = utf8mb4_general_ci

server_id=1

#开启binlog日志

log_bin=mysql-bin

binlog_format=ROW

#不区分大小写

lower_case_table_names = 1

#不开启sql严格模式

sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

log-error=/var/log/mysqld.log

pid-file=/usr/local/mysql/data/mysqld.pid

7、启动mysql服务

[root@xqk mysql]# cp /usr/local/mysql/support-files/mysql.server  /etc/init.d/mysqld

[root@xqk mysql]# vim /etc/init.d/mysqld

basedir=/usr/local/mysql

datadir=/usr/local/mysql/data

[root@xqk mysql]# /etc/init.d/mysqld start

Starting MySQL.                                            [  OK  ]

8、登录mysql,修改密码

1> 添加软连接

[root@xqk mysql]# ln -s /usr/local/mysql/bin/mysql /usr/bin

2> 登录mysql,(密码为前面初始化生成的临时密码)

[root@xqk mysql]# mysql -uroot -p

Enter password:

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 3

Server version: 5.7.25 MySQL Community Server (GPL)

....

3> 修改密码

如果需要使用远程登录,则下方步骤中设置密码的语句要使用这条:alter user 'root'@'%' identified by '符合MySQL5.7安全策略的密码';。增加root用户指定可以任意IP登录,如果想限制只能让指定IP登录请把%替换成IP地址

如果不需要,则语句中的%改为lochlhost即可。

MySQL5.7起,遵循其密码安全策略,密码必须包含数字、字母,且不能少于一定位数,如果需要设置简易密码,比如为了自己测试,不想密码设置得那么复杂(设置root的密码为123456 或 111111)。【没有这个需求的,可忽略步骤1)、2)、3)、4)。直接使用alter user 'root'@'localhost' identified by '符合要求的密码';】

1)查看validate_password是否安装及其配置情况:

mysql> SHOW VARIABLES LIKE 'validate_password%';

Empty set (0.00 sec)

2)若是空的,则说明没有安装。需要安装:

mysql> INSTALL PLUGIN validate_password SONAME 'validate_password.so';

Query OK, 0 rows affected (0.00 sec)

3)验证是否安装成功:

mysql> SHOW VARIABLES LIKE 'validate_password%';

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

| Variable_name                        | Value  |

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

| 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      |

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

7 rows in set (0.00 sec)

4)接着设置参数

mysql> set global validate_password_policy=0;

Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password_length=1;

Query OK, 0 rows affected (0.00 sec)

5)修改用户root登陆mysql的密码为 123456

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

Query OK, 0 rows affected (0.00 sec)

6)授权新用户

mysql> grant all privileges on *.* to 'xqk'@'%' with grant option;

Query OK, 0 rows affected (0.00 sec)

===举例说明====

GRANT ALL PRIVILEGES ON *.* TO 'choi'@'localhost' IDENTIFIED BY '1234' WITH GRANT OPTION;

创建一个超级管理员,用户名为choi,密码为1234,只能在localhost登陆;可以给别人授权;

其中:

- ALL PRIVILEGES即代表所有权限;

- *.*:所有数据库对象。普通格式为db.table,比如test.*;

- 'choi'@'localhost':超级管理员,只能在本机访问。

- 用户账户包括user@host;

host:

%:从任意地址访问;

10.250.7.%:只能从指定网段访问;

192.168.1.2:只能从某个IP访问;

- WITH GRANT OPTION:是否允许用户继续授权(注意,这个用户能够授权只能是该用户的权限子集)

- 注意,在授权操作之后,使用flush privileges命令刷新权限;

eg:给普通用户xqk,授予查询和添加权限

GRANT select,insert ON *.* TO 'xqk'@'%';

flush privileges;

7)刷新权限

mysql> flush privileges;

mysql> show grants for current_user();

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

| Grants for root@localhost                                           |

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

| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |

| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION        |

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

2 rows in set (0.00 sec)

Question 1:MySQL5.7允许远程用户登录设置时报错

mysql> alter user root@'%' identified by '123456';

ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'%'

处理方法:直接创建一个用户,因为新版MySQL用户权限标示是 user 和 host 组成的二元组,上述语句需要确保该二元组存在

mysql> create user 'root'@'%' identified by '123456';

Query OK, 0 rows affected (0.00 sec)

Question 2:忘记管理员密码或想重新设置密码

1> vi /etc/my.cnf,在[mysqld]的段中加上一句:skip-grant-tables

2> 重新启动mysqld,/etc/init.d/mysqld restart或用service mysqld restart

3> 进入mysql,选择数据库mysql> use mysql

4> MySQL 5.7的数据库没有了password字段,得用authentication_string字段

mysql> update mysql.user set authentication_string=password('重设的符合条件的密码') where user='root';

5> 刷新权限

mysql> flush privileges;

skip-grant-tables选项会让MySQL服务器跳过验证步骤,允许所有用户以匿名的方式,无需做密码验证直接登陆MySQL服务器,并且拥有所有的操作权限。

6> 修改完记得删除或屏蔽skip-grant-tables

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值