• CentOS 7 安装 MySQL5.7


    一:使用RPM安装MySQL5.7

      学到了在CentOS里安装MySQL5.7,那你肯定对MySQL有个基本的使用,所以我废话少说直接干货!!

    1:下载MySQL5.7的rpm安装包

      下载地址  选择合适的版本,这里我们使用的是MySQL5.7.33;下载完成后发送到自己的CentOS7服务器里,这里可以通过命令:rz -y来上传,或者Xftp

     2:卸载已安装的MySQL(没安装过则跳过)

      注:卸载之前请关闭mysql服务,命令:systemctl stop mysqld  

    按照顺序卸载:

    rpm -e --nodeps mysql-community-server
    rpm -e --nodeps mysql-community-client
    rpm -e --nodeps mysql-community-libs
    rpm -e --nodeps mysql-community-common

      卸载完基本的环境后,我们要清理依赖的文件(数据库配置文件及数据库数据文件)

    -- 删除数据库配置文件(一般情况下卸载了mysql这个文件也会被自动删除)
        rm -rf  /etc/my.cnf
    -- 删除数据库数据文件(包含系统数据库表和自定义数据库表)
        rm -rf /var/lib/mysql
    -- 删除日志临时文件(比如安装后产生密码的文件,不删除会发现安装后查询2个初始密码,但以下面的为主)
        rm -rf /var/log/mysqld.log

    3:MySQL安装环境准备

    # 卸载mariadb:

      检查是否安装了mariadb(CentOS7默认安装),如存在则卸载mariadb;如果你是CentOS6,则默认是MySQL,那么你就卸载MySQL即可

      说明:以前的Linux系统中数据库大部分是MySQL,不过自从被 sun 收购之后,就没用集成在centos这些开源Linux系统中了,那么如果想用的话就需要自己安装了,首先centos7 已经不在默认提供 MySQL,因为收费了你懂得,所以内部集成了mariadb,而安装 MySQL 的话会和mariadb的文件冲突,所以需要先卸载掉mariadb

    rpm -qa | grep mariadb
    rpm -e mariadb-libs-5.5.68-1.el7.x86_64 --nodeps

    # 安装所需依赖:

      一般都是最新版了,以防万一后面安装出错,缺少依赖

    yum install libaio
    yum install net-tools

    4:安装我们上传的四个MySQL包并启动

    # 安装:

      安装时必须严格遵守安装顺序 依赖关系依次为 common → libs → client → server

      注:ivh中, i-install安装;v-verbose进度条;h-hash哈希校验

    rpm -ivh mysql-community-common-5.7.33-1.el7.x86_64.rpm
    rpm -ivh mysql-community-libs-5.7.33-1.el7.x86_64.rpm 
    rpm -ivh mysql-community-client-5.7.33-1.el7.x86_64.rpm
    rpm -ivh mysql-community-server-5.7.33-1.el7.x86_64.rpm

    # 安装后查询安装的MySQL版本
    mysqladmin --version

    # 启动及查询状态:

    # 查询MySQL在系统的状态
    [root@VM-8-15-centos ~]# systemctl status mysqld
    # 启动MySQL数据库
    [root@VM-8-15-centos ~]# systemctl start mysqld
    # 关闭MySQL数据库
    [root@VM-8-15-centos ~]# systemctl stop mysqld
    # 重启MySQL数据库
    [root@VM-8-15-centos ~]# systemctl restart mysqld
    # 查看MySQL进程
    [root@VM-8-15-centos ~]# ps -ef | grep mysql

    5:登录安装的MySQL5.7

      由于MySQL5.7.4之前的版本中默认是没有密码的,登录后直接回车就可以进入数据库,从而在里面进行设置密码等操作。其后版本对密码等安全相关操作进行了一些改变,在安装过程中,会在安装日志中生成一个临时密码

      获取数据库临时密码:grep 'temporary password' /var/log/mysqld.log

     # 更改密码

       初始化密码只是提供给你登录到内部,而我们进入到内部必须修改密码,否则无法对数据库操作,就如下图我们无法操作

     # new_password替换成自己的密码
     ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

      什么??不符合策略,这里告诉你,密码为8位并且包含特殊字符、大小写字母、数字

      如: ALTER USER 'root'@'localhost' IDENTIFIED BY  'aaAA$$!!66' ;

    # 查看密码策略及更改策略

      这是因为MySQL有密码设置的规范,具体是与validate_password_policy的值有关:

      查看默认的策略配置 : show variables like 'validate_password%';  

    mysql>  show variables like 'validate_password%';  
    +--------------------------------------+--------+
    | Variable_name                        | Value  |
    +--------------------------------------+--------+
    | validate_password_check_user_name    | OFF    |  是否验证用户名
    | validate_password_dictionary_file    |        |  密码策略文件,策略为STRONG才需要
    | 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      |  特殊字符至少一个
    +--------------------------------------+--------+

      看到上面设置个密码那么复杂,还记不住,那我们修改一下策略(设置LOW并且长度设置为3)

    set global validate_password_policy=0;       # 关闭密码复杂性策略(LOW)
    set global validate_password_length=3;       # 设置密码复杂性要求密码最低长度为3
    
    select @@validate_password_policy;        # 查看密码复杂性策略
    select @@validate_password_length;        # 查看密码复杂性要求密码最低长度大小
    
    show variables like 'validate_password%';   # 查询具体策略
    +--------------------------------------+-------+
    | Variable_name                        | Value |
    +--------------------------------------+-------+
    | validate_password_check_user_name    | OFF   |
    | validate_password_dictionary_file    |       |
    | validate_password_length             | 3     |
    | validate_password_mixed_case_count   | 1     |
    | validate_password_number_count       | 1     |
    | validate_password_policy             | LOW   |
    | validate_password_special_char_count | 1     |
    +--------------------------------------+-------+

      终于可以设置灵魂密码了 : mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';

    6:创建用户并授权

      MySQL中的用户账户由用户名和主机部分组成,要创建MySQL账户语法如下

    基本创建:
        语法:mysql> CREATE USER '用户名'@'localhost' IDENTIFIED BY '密码';
        # '用户名'@'localhost' 其中localhost代表设置只能从localhost本机连接到MySQL服务器,无法远程
    
        语法:mysql> CREATE USER '用户名ser'@'119.28.68.52' IDENTIFIED BY '密码';
        # '用户名'@'119.28.68.52' 只能从IP 119.28.68.52 的计算机授予(远程)访问权限
    
        语法:mysql> CREATE USER '用户名'@'%' IDENTIFIED BY '密码';
        # '用户名'@'%' 可以从任何主机连接到MySQL
    
    用户账户权限设置:
        ALL PRIVILEGES  - 授予用户帐户的所有权限。
        CREATE          - 允许用户帐户创建数据库和表。
        DROP            - 允许用户帐户删除数据库和表。
        DELETE          - 允许用户帐户从特定表中删除行。
        INSERT          - 允许用户帐户将行插入特定表。
        SELECT          - 允许用户帐户读取数据库。
        UPDATE          - 允许用户帐户更新表行。
        语法:mysql> GRANT ALL 权限1,权限2,... ON 分配权限的数据库名称 . * TO '用户名'@'%';
    
    一些示例如下:
        对特定数据库上的用户帐户授予所有权限:
            GRANT ALL PRIVILEGES ON database_name.* TO 'database_user'@'localhost';
        为所有数据库上的用户帐户授予所有权限:
            GRANT ALL PRIVILEGES ON *.* TO 'database_user'@'localhost';
        通过数据库中的特定表格对用户帐户的所有权限:
            GRANT ALL PRIVILEGES ON database_name.table_name TO 'database_user'@'localhost';
        通过特定数据库为用户帐户授予多个权限:
            GRANT SELECT, INSERT, DELETE ON database_name.* TO database_user@'localhost';
            
    显示MySQL用户帐户权限
        要查找授予特定MySQL用户帐户的权限,请使用SHOW GRANTS语句:
        SHOW GRANTS FOR '用户名'@'localhost';
    # 首先我创建一个数据库,为了给用户分配上权限
    CREATE DATABASE IF NOT EXISTS school DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
    # 创建用户
    CREATE USER 'jack'@'%' IDENTIFIED BY '54088';           # 可远程访问权限
    CREATE USER 'jack'@'localhost' IDENTIFIED BY '54088';   # 本地访问的权限
    # 分配school表给用户jack最大权限
    GRANT ALL PRIVILEGES ON school . * TO 'jack'@'%';
    # 刷新配置
    flush privileges;

     # 撤销MySQL用户上的权限

      用户帐户撤消一个或多个权限的语法与授予权限时几乎相同。如要通过特定数据库撤消用户帐户的所有权限,请使用以下命令:

         REVOKE ALL PRIVILEGES ON school.* FROM 'jack'@'%';

     # 删除MySQL用户账户

       DROP USER 'jack'@'%';

    .

    作者:蚂蚁小哥
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利。
  • 相关阅读:
    Spring Cloud:第四章:Hystrix断路器
    Spring Cloud:第五章:Zuul服务网关
    Spring Cloud:第六章:Config分布式配置
    ES使用org.elasticsearch.client.transport.NoNodeAvailableException: No node available
    for循环使用后contains方法失去效果
    我的分享:第二章:SpringCould专栏
    Spring Cloud:第二章:eureka服务发现
    java程序员怎么创建自己的网站:第四章:做个网站引入广告赚点小钱
    php函数
    each与list的用法
  • 原文地址:https://www.cnblogs.com/antLaddie/p/14681789.html
Copyright © 2020-2023  润新知