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 > initialize.log
    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
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值