zoukankan      html  css  js  c++  java
  • (0.2.3)Mysql安装——二进制安装

    关键词:mysql安装,二进制安装,基于centos6.5,mysql5.7.x

    Linux平台下二进制方式安装卸载mysql

    本章节:二进制安装mysql

     相关参考资源:https://www.jianshu.com/p/0d628b2f7476

    官方安装文档:https://dev.mysql.com/doc/refman/5.7/en/binary-installation.html

    目录:5.7.6之后版本

    1、基于Linux平台的Mysql项目场景介绍

    2、mysql数据库运行环境准备-最优配置

    3、如何下载mysql数据库

    4、linux平台下二进制文件方式安装mysql

    4.1、环境检查(libaio包、卸载现有数据库,检查删除现有数据库 rpm -qa |grep mysql,-e参数为删除)

    4.2、安装过程

    (1)下载文件、上传安装程序

    (2)创建用户,组,创建目录

    (3)解压安装程序包 (tar -zxvf file)

    (4)修改权限(授权用户对解压目录的权限) 

    (5)配置环境变量(以便可以直接运行mysql命令,vi ~/.bash_profile) 

    (6)准备参数配置文件 (my.cnf)

      如果一个机器上有安装多个mysql版本,可以在配置文件中[mysql-5.7] 这样,来指定版本的配置参数。

    (7)开始初始化Mysql (mysqld --defaults-file=/mysql/data/3306/my.cnf --initialize --user=mysql --basedir=/mysql/app/mysql --datadir=/mysql/data/3306/data)

      如果是mysql5.6则是(mysql/bin目录下的,./scripts/mysql_install_db --user=mysql --defaults-file=/usr/local/mysql/my.cnf --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/)

      自带有配置文件模板:mysql/bin/support-files/my-default.cnf

    (8)配置启动脚本 (/mysql/app/mysql/support-files/mysql.server)

    (9)启停验证,日志查看 

    【1】使用服务启动与停止mysql(适合单实例,拷贝(8)中修改好的mysql.server文件到 /etc/init.d/ 目录下,生成服务)
    【2】设置mysql服务自启
    【3】重启验证
    【4】使用文件启动与停止mysql(可以适用于单实例、多实例)
    【5】修改配置文件,解决密码过期问题(比较危险,设置了之后连密码都不要,跳过权限表)
    【6】登陆测试

    (10)后期配置(密码修改,启动远程访问) 

    【1】解决密码过期问题的两种方式(配置文件skip-grant-tables,mysql.user表password_expired字段设置)
    【2】修改密码(参考:修改密码的四种方式)
    【3】启用远程连接的2种方式(修改root的host为%,重新授权新建root@%)

    (11)远程连接测试

    (12)删除二进制安装的mysql(停止服务,删除相关数据文件即可)

    【本文5.7.24自动化安装shell脚本】(不可重复跑)

    【相关5.7安装参考笔记】

    5、Linux平台下通过源码方式安装mysql

    6、Linux平台下通过yum方式安装mysql

    7、Linux平台下通过RPM方式安装mysql

    8、mysql安装后的配置与运行参数设置

    9、mysql安装后的测试与远程连接

    10、mysql基本管理命令

    11、Linux平台如何卸载mysql版本

    思路:

    【1】环境检查

    【1.1】libaio

      检查,libaio(异步包要装好),没装的话直接挂载光驱里的操作系统iso文件,做yum源安装(详情见:(0.2.1)mysql数据库环境-操作系统配置  2.4Yum源配置

        

    #不同版本安装的时候可能会缺少libaio.so.1文件
    
      使用 wget http://mirror.centos.org/centos/6/os/x86_64/Packages/libaio-0.3.107-10.el6.x86_64.rpm 
      rpm -ivh libaio-0.3.107-10.el6.x86_64.rpm 可以安装缺少的文件

    【1.2】删除系统自带的mysql 、mariadb

        rpm -qa|grep mysql  #检查是否有

        rpm -qa|grep mariadb   #检查是否有

        rpm -e --nodeps mysql-libs-5.1.71-1.el6.x86_64   #用这个方式以此删除所有的,如有依赖报错可能需要先删除另外一个

        

          如果这种报错就使用  --nodeps参数,或者直接 yum remove mysql*    

      

    【2】安装过程

    【2.1】下载文件、上传安装程序

    
    
      mkdir -p /mysql/app
    
      使用CRT上传、XSHELL等工具上传到该目录,这里只做了CRT链接,其他工具具体可以百度。
    
    

    【2.2】创建用户,组,创建目录

    groupadd mysql
    
    useradd mysql -r -g mysql -s /sbin/false  
    
    mkdir -p /mysql/data/3306/data
    
    mkdir -p /mysql/log/3306
    
        useradd -r:添加系统用户  -g:指定分组  -s:指定登录的shell,这里操作是不让它登录OS

    【2.3】解压安装程序包

        cd /mysql/app

      tar -zxvf 安装包名(比如我这里如下)

         tar -zxvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz

      解压后如图

      为了保护原有文件名好识别版本等信息,再做个软链接,

        ln -s mysql-5.7.24-linux-glibc2.12-x86_64 mysql,软链接如下 mysql->mysql-5.7.24…………

        

      --进入解压出来的文件,查看mysql二进制包目录信息

        cd /mysql      #通过软链接进入

        

        【README】:读这个文件了解Mysql情况  【share】:放一些错误的信息,比如数据字典和SQL的安装

        【support-files】:mysql的支持文件

    【2.4】修改权限(授权用户对解压目录的权限)

        chown -R mysql:mysql /mysql      #把Mysql目录的拥有者设置为mysql用户   -R 为递归,表示/mysql即mysql下所有文件/文件夹均生效

    【2.5】配置环境变量(以便可以直接运行mysql命令)

        vi ~/.bash_profile

      在PATH后面加上  ':' 再加上mysql/bin目录的绝对路径即可

      

      配置完后,记得source ~/.bash_profile ,这样才能立马生效

       PS小建议:

        #全局环境变量:也可以使用该句:echo "export PATH=/mysql/app/mysql/bin:$PATH">>/etc/profile ,source /etc/profile

        #这样可以避免安装了多个Mysql版本而使用的mysql/mysqld/mysqldump等等bin目录下的命令是用的其他版本的)

                         

    【2.6】准备参数配置文件

      (1)查看参数配置文件访问启动路径

        mysql --help |grep my.cnf

        

        参数文件默认读取顺序:【1】/etc/my.cnf  【2】/etc/mysql/my.cnf  【3】/usr/local/mysql/my.cnf  【4】~/.my.cnf

      

    #以下参考命令可以在启动时指定配置文件/参数文件的路径
    mysqld_safe
    --default-file=/mysql/data/3306/my.cnf &

      (2)参数文件配置:【my.cnf简单配置参考文章1】【详细配置参考:非常全面的配置与思考详细配置与思考

      

    [client]
    port = 3306
    socket = /mysql/data/3306/mysql.sock
    default-character-set=utf8
    
    [mysql]
    disable-auto-rehash #允许通过TAB键提示
    default-character-set = utf8
    connect-timeout = 10
    
    [mysqld]
    server-id = 3306
    port = 3306
    user = mysql
    socket = /mysql/data/3306/mysql.sock
    pid-file = /mysql/data/3306/mysql.pid
    basedir = /mysql/app/mysql/
    datadir = /mysql/data/3306/data
    #bind_address = 10.10.10.11
    autocommit = 0
    
    character-set-server=utf8
    explicit_defaults_for_timestamp=true
    lower_case_table_names=1
    back_log=103
    max_connections=10000
    max_connect_errors=100000
    table_open_cache=512
    external-locking=FALSE
    max_allowed_packet=32M
    sort_buffer_size=2M
    join_buffer_size=2M
    thread_cache_size=51
    query_cache_size=32M
    #query_cache_limit=4M
    transaction_isolation=READ-COMMITTED
    tmp_table_size=96M
    max_heap_table_size=96M
    
    
    ###***logs
    long_query_time = 10
    slow_query_log = 1
    slow_query_log_file=/mysql/log/3306/slow.log
    
    #log-warnings = 1
    log_error_verbosity=3
    
    log-error = /mysql/log/3306/mysql.err
    log_output = FILE #参数log_output指定了慢查询输出的格式,默认为FILE,你可以将它设为TABLE,然后就可以查询mysql架构下的slow_log表了
    
    
    #log-queries-not-using-indexes
    #log-slow-slave-statements
    #general_log = 0
    #general_log_file = /mysql/log/3306/mysql.log
    #max_binlog_size = 1G
    #max_relay_log_size = 1G
    
    
    ## replication
    #log-bin=mysql-bin
    #server-id=1
    #binlog_format= ROW
    #gtid_mode = on
    #enforce_gtid_consistency = 1
    #log_slave_updates   = 1
    #master-info-repository=TABLE
    #relay-log-info-repository=TABLE
    
    #  innodbstorageengineparameters
    innodb_buffer_pool_size=1G
    innodb_data_file_path=ibdata1:1G:autoextend:max:5G #redo
    innodb_temp_data_file_path = ibtemp1:200M:autoextend:max:10G
    #innodb_file_io_threads=4  #默认的是4
    innodb_log_buffer_size=16M
    innodb_log_file_size=256M  #undo
    innodb_log_files_in_group=2
    innodb_lock_wait_timeout=50
    innodb_file_per_table=1      #独立表空间
    my.cnf

     5.6中,需要把auto_commit 参数先注释掉,才能安心初始化。初始化安装完成后,可以把该参数再加上。

      

       在/mysql/data/3306/ 下新建my.cnf文件,然后把上述代码复制进文件

      (3)然后要重新授权,因为当前登录是root账户,新文件属于root

    #创建文件
    vi  /mysql/data/3306/my.cnf
    
    #张贴代码
    
    #创建错误日志文件(不创建可能起不来)
    touch /mysql/data/3306/mysql.err
    
    #授权
    chown -R mysql:mysql /mysql/log/3306/

    【2.7】开始初始化Mysql 

      mysqld --defaults-file=/mysql/data/3306/my.cnf --initialize --user=mysql --basedir=/mysql/app/mysql --datadir=/mysql/data/3306/data 

     #如果是mysql5.6则是(mysql/bin目录下的,./scripts/mysql_install_db --user=mysql --defaults-file=/usr/local/mysql/my.cnf --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/)
     #自带有配置文件模板:mysql/bin/support-files/my-default.cnf
    #其他相关信息安装方面一致

    ############  这一步可以省略 开始 ########################

    【2.8】配置启动脚本(把数据库配置成服务以便可以使用 service mysql start 启动)

      【1】查看启动路径,mysql --help |grep my.cnf

      

      【2】修改源码文件  /mysql/app/support-script/mysql.server 

        1) cp mysql.server mysql

        2) vi mysql(这一步可以省略)

        对照修改查看。

             

        把引用参数文件的路径由【1】中的默认路径更改为自定义路径。即在下图加上--defaults-file=/mysql/data/3306/my.cnf  (即自定义的参数文件路径)

        

      

     ######################这一步可以胜率  结束 ##################################

    【2.9】启停验证,日志查看

      

      (1)使用服务启动与停止mysql(适合单实例)

        拷贝修改的名为  mysql  的文件到 etc/init.d 目录下下去(这个目录里面包含了一系列系统里面服务的开启和停止的脚本,并且文件名即服务名)

        cp mysql.server mysql

        cp mysql /etc/init.d    

        ln -s /mysql/data/3306/my.cnf /etc/my.cnf  #做软连接,以便可以把mysql当做linux系统服务启动

         设置好后,

        启动命令:service mysql start (如果是centos7以上则是,systemctl start mysql.service)

        关闭命令:service mysql stop (如果是centos7以上则是,systemctl stop mysql.service)

         本文是centos6.5,操作如下:

       

      (2)设置mysql服务自启

        

        如果是关闭的就可以设置如下代码增加自启(详细参考:linux服务管理与启停

        chkconfig --level 2345 mysql on 

       (3)重启验证

        ps -ef |grep mysql

        

       (4)使用文件启动与停止mysql(可以适用于单实例、多实例)

        新建一个文件,用mysql_safe的方式启动mysql实例(语句可以从上面的ps -ef |grep mysql 中获取)

        

        用sqladmin关闭,sqladmin -uroot -p shutdown,发现失败了,说sock文件不存在!

        

         

        那么这里,我们发现ps -ef| grep mysql 这上面显示了sock文件在哪里,我们用-S参数加上。然后用mysqladmin 关闭,这里使用的是系统初始化后的默认密码;

        sock文件说不存在与/tmp/mysql.sock,可以直接软连接 ln -s /mysql/data/3306/mysql.sock /tmp/mysql.sock

        这里提示我们密码过期了,要我们修改才行。

      (5)修改配置文件,解决密码过期问题(比较危险,设置了之后连密码都不要,跳过权限表)

        [mysqld]下面增加一行

        skip-grant-tables

      (6)登陆测试

        1)直接使用mysql登陆,发现又要管sock(密码再错误日志中)

          

        2)解决每次都要使用 -S /sock目录 参数

          把我们的sock文件,做一个软链接到 /tmp 目录下去

          ln -s /mysql/data/3306/mysql.sock /tmp

          

          成功

          

    【2.10】后期配置(密码修改,启动远程访问)

      【1】解决密码过期问题的两种方式(配置文件,mysql.user表password_expired字段设置)

        1)修改my.cnf配置文件:[mysqld]下面增加一行skip-grant-tables  (比较危险,设置了之后连密码都不要,跳过权限表)

        2)mysql.user表password_expired字段设置为N

      【2】修改密码(参考:修改密码的四种方式

        1)set password = password('123456');     flush privileges;

        2)mysqladmin -u用户名 -p旧密码 password 新密码 

        3)update mysql.user set password=password('123') where user='root' and host='localhost';  

      【3】启用远程连接的2种方式(修改root的host为%,重新授权新建root@%)

         1)在本机登入mysql后,更改“mysql”数据库里的“user”表里的“host”项,从”localhost”改为'%'。

    select host,user from mysql.user where user='root';
    update mysql.user set host = '%' where user ='root'; flush privileges;

        2)授权新建一个主机为%的root账户   

    grant all privileges on *.* to 'root'@'%' identified by '123456' with option;
    flush privileges;

    (11)远程连接测试

    【2.11】如何删除二进制安装的mysql

    (参考:https://www.cnblogs.com/kerrycode/p/4364465.html

      1)停止服务

      2)删除所有相关目录即可

      本文需要清理的就是

       /mysql/data/

       /mysql/log/

      /mysql/app/

      /etc/init.d/mysql

    【本文5.7.24自动化安装shell脚本】(不可重复跑)  

    前提:

      (1)把mysql二进制安装文件放在 根目录(/)

      (1)把mysql 配置文件my.cnf放在 根目录(/)

    #!/bin/bash
    #the mysql install file in path: /mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
    
    echo 'begin check mysql exist......' |tee -a 1.txt
    flag=`rpm -qa|grep mysql -c`
    mysql_name=`rpm -qa|grep mysql`
    if [ ${flag} -ne 0 ];then
        echo -n 'begin delete old mysqlinfo......'|tee -a 1.txt
        rpm -e --nodeps ${mysql_name} 2>>1.txt
        if [ $? -eq 0 ];then
            echo 'OK'|tee -a 1.txt
        else
            echo 'Failed'|tee -a 1.txt
            exit
        fi
    fi
    
    
    echo -n 'begin add group mysql......'|tee -a 1.txt
        groupadd mysql
        if [ $? -eq 0 ];then
            echo 'OK'|tee -a 1.txt    
        else
            echo 'Failed'|tee -a 1.txt
            exit
        fi
    
    echo -n 'begin add user mysql......'|tee -a 1.txt
        useradd mysql -r -g mysql -s /bin/false
        if [ $? -eq 0 ];then
            echo 'OK'|tee -a 1.txt    
        else
            echo 'Failed'|tee -a 1.txt
            exit
        fi
        
        
    echo -n 'begin mkdir mysql dir......'|tee -a 1.txt
        mkdir -p /mysql/app
        mkdir -p /mysql/data/3306
        mkdir -p /mysql/log/3306
        if [ $? -eq 0 ];then
            echo 'OK'|tee -a 1.txt    
        else
            echo 'Failed'|tee -a 1.txt
            exit
        fi
    
    echo -n 'cp /mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz to /mysql/app......'|tee -a 1.txt
        cp /mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz /mysql/app/
        if [ $? -eq 0 ];then
            echo 'OK'|tee -a 1.txt    
        else
            echo 'Failed'|tee -a 1.txt
            exit
        fi
            
    
    echo -n 'cp /mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz to /mysql/app......'|tee -a 1.txt
        cp /mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz /mysql/app/
        if [ $? -eq 0 ];then
            echo 'OK'|tee -a 1.txt    
        else
            echo 'Failed'|tee -a 1.txt
            exit
        fi    
        
    echo -n 'uncompression mysql install file......'|tee -a 1.txt
        cd /mysql/app 
        tar -zxvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
        if [ $? -eq 0 ];then
            echo 'OK'|tee -a 1.txt    
        else
            echo 'Failed'|tee -a 1.txt
            exit
        fi    
    
    echo -n 'create ln -s mysql_install_dir to mysql......'|tee -a 1.txt
        ln -s mysql-5.7.26-linux-glibc2.12-x86_64 mysql
        if [ $? -eq 0 ];then
            echo 'OK'|tee -a 1.txt    
        else
            echo 'Failed'|tee -a 1.txt
            exit
        fi    
        
    echo -n 'configure the $path......'|tee -a 1.txt
        echo 'export PATH=/mysql/app/mysql/bin:$PATH'>>/etc/profile
        if [ $? -eq 0 ];then
            echo 'OK'|tee -a 1.txt    
        else
            echo 'Failed'|tee -a 1.txt
            exit
        fi        
        source /etc/profile
    
    echo -n 'cp /my.cnf to /etc/my.cnf......'|tee -a 1.txt
        cp /my.cnf /etc/my.cnf
        if [ $? -eq 0 ];then
            echo 'OK'|tee -a 1.txt    
        else
            echo 'Failed'|tee -a 1.txt
            exit
        fi        
    
    echo -n 'mysqld --initialize --user=mysql......'|tee -a 1.txt
        mysqld --initialize --user=mysql
        if [ $? -eq 0 ];then
            echo 'OK'|tee -a 1.txt    
        else
            echo 'Failed'|tee -a 1.txt
            exit
        fi        
    
    
    echo -n 'cp my.server file to /etc/init.d/mysql......'|tee -a 1.txt
        cp /mysql/app/support-script/mysql.server /etc/init.d/mysql
        if [ $? -eq 0 ];then
            echo 'OK'|tee -a 1.txt    
        else
            echo 'Failed'|tee -a 1.txt
            exit
        fi        
    
    echo -n 'chkconfig mysql on......'|tee -a 1.txt
        chkconfig mysql on
        if [ $? -eq 0 ];then
            echo 'OK'|tee -a 1.txt    
        else
            echo 'Failed'|tee -a 1.txt
            exit
        fi    
    
    echo -n 'start mysql service ......'|tee -a 1.txt
        flag=`service mysql status |grep SUCCESS -c`
        if [ ${flag} -ne 0 ];then
            echo -n 'ok'|tee -a 1.txt
        else
            service mysql start
            if [ $? -eq 0 ];then
                echo 'OK'|tee -a 1.txt
            else
                echo 'Failed'|tee -a 1.txt
                exit
            fi
        fi
        

    【相关5.7安装参考笔记】

    #!/bin/sh
    #建立用户组
    groupadd mysql
    #建立用户
    useradd -r -g mysql mysql
    #切换到解压路径,解压二进制mysql包
    cd /usr/local
    if [ -d mysql-5.7.9-linux-glibc2.5-x86_64 ]; then 
    echo "mysql folder is exists"
    else
    tar -xzvf  mysql-5.7.9-linux-glibc2.5-x86_64.tar.gz
    fi
    #做软链接起名为mysql
    ln -s  mysql-5.7.9-linux-glibc2.5-x86_64 mysql
    #切换到mysql(mysql二进制安装文件 解压出来的软连接目录)目录下
    cd mysql
    #添加环境变量
    echo "export PATH=/usr/local/mysql/bin:$PATH">>/etc/profile
    #重新引用环境变量以便即时生效
    source /etc/profile
    #关防火墙
    service iptables stop
    chkconfig iptables off
    
    #构造mysql自定义目录
    if [ -d mysql-files ]; then
    echo "mysql-files is exists"
    else
    mkdir mysql-files
    fi
    chmod 770 mysql-files
    chown -R mysql .
    chgrp -R mysql .
    if [ -d data ]; then
    mv data data_$(date+%Y%m%d)
    else 
    echo "data is not exist"
    fi
    #初始化mysql,根据默认配置文件/etc/my.cnf or /etc/mysql/my.cnf  or ./my.cnf
    ./bin/mysqld --initialize --user=mysql
    
    #修改所有者权限
    chown -R root .
    chown -R mysql data mysql-files
    #启动mysql
    ./bin/mysqld_safe --user=mysql &
    #复制mysql.server文件以便成为服务
    cp -rf support-files/mysql.server /etc/init.d/mysql.server
    #./usr/local/mysql/support-files/mysql.server stop
    ps -ef|grep mysql|grep -v grep |awk -F' ' '{print $2}'|xargs kill -s 9
           #serivce mysql stop
    ./bin/mysqld_safe --skip-grant-tables &
          #service mysql start
          #./usr/local/mysql/support-files/mysql.server start
    mysql -uroot -p
    use mysql;
    update mysql.user set authentication_string=password('123456') where user='root';
    flush privileges;
    quit;
    
    mysql -uroot -p123456
    set password for 'root'@'localhost'=password("123456");
    flush privileges;

    15.安装完成后的优化(删除多余数据库与账户)

    15.1、查看数据库的版本信息

    1
    2
    3
    4
    5
    6
    7
    MariaDB [(none)]> select version();
    +----------------+
    | version()      |
    +----------------+
    | 5.5.52-MariaDB |
    +----------------+
    1 row in set (0.18 sec)

    15.2、删除多余的账号(除root和localhost的)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    MariaDB [(none)]> use mysql
    MariaDB [mysql]> select user,host from mysql.user;
    +------+------------------------+
    | user | host                   |
    +------+------------------------+
    | root | 127.0.0.1              |
    | root | ::1                    |
    |      | localhost              |
    | root | localhost              |
    |      | lvs-dr01.saltstack.com |
    | root | lvs-dr01.saltstack.com |
    +------+------------------------+
    6 rows in set (0.03 sec)
    MariaDB [mysql]> delete from mysql.user where (user,host) not in (select 'root','localhost');
    Query OK, 5 rows affected (0.05 sec)
    MariaDB [mysql]> select user,host from mysql.user;
    +------+-----------+
    | user | host      |
    +------+-----------+
    | root | localhost |
    +------+-----------+
    1 row in set (0.05 sec)

    15.3、修改mysql默认的mysql管理账号

    修改默认的mysql管理账号(root改为mysql,并设置新密码为redhat12345)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    MariaDB [mysql]> update user set user="admin" where user="root";
    MariaDB [mysql]> update mysql.user set user='admin',password=password('redhat12345');
    Query OK, 1 row affected (0.08 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    MariaDB [mysql]> flush privileges;
    Query OK, 0 rows affected (0.03 sec)
    [root@LVS-DR01 ~]# mysql -uadmin -p'redhat12345'
    MariaDB [(none)]> user mysql;
    MariaDB [mysql]> show tables;

    继续查询:

    1
    2
    3
    4
    5
    6
    7
    MariaDB [mysql]> select user,host from mysql.user;
    +-------+-----------+
    | user  | host      |
    +-------+-----------+
    | admin | localhost |
    +-------+-----------+
    1 row in set (0.00 sec)

    15.4、删除test数据库

    为什么要删?新建MySQL数据库后,默认创建的test数据库权限比较怪异,所有可连接的用户都能够拥有权限访问该库

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    MariaDB [mysql]> drop database test;
    MariaDB [mysql]> flush privileges;
    MariaDB [(none)]> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    +--------------------+
    3 rows in set (0.06 sec)

    15.5、优化权限字典表mysql.db

    如下所示:新建MySQL数据库后,默认创建的test数据库权限比较怪异,所有可连接的用户都能够拥有权限访问该库,并操作其中的对象,Host为%,User为空,说明了不受限制,所有能连接到MySQL的用户,全部拥有test及test开头的数据库的几乎所有权限。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    MariaDB [mysql]> select * from mysql.db where db like 'test%' G
    *************************** 1. row ***************************
                     Host: %
                       Db: test
                     User: 
              Select_priv: Y
              Insert_priv: Y
              Update_priv: Y
              Delete_priv: Y
              Create_priv: Y
                Drop_priv: Y
               Grant_priv: N
          References_priv: Y
               Index_priv: Y
               Alter_priv: Y
    Create_tmp_table_priv: Y
         Lock_tables_priv: Y
         Create_view_priv: Y
           Show_view_priv: Y
      Create_routine_priv: Y
       Alter_routine_priv: N
             Execute_priv: N
               Event_priv: Y
             Trigger_priv: Y
    *************************** 2. row ***************************
                     Host: %
                       Db: test\_%
                     User: 
              Select_priv: Y
              Insert_priv: Y
              Update_priv: Y
              Delete_priv: Y
              Create_priv: Y
                Drop_priv: Y
               Grant_priv: N
          References_priv: Y
               Index_priv: Y
               Alter_priv: Y
    Create_tmp_table_priv: Y
         Lock_tables_priv: Y
         Create_view_priv: Y
           Show_view_priv: Y
      Create_routine_priv: Y
       Alter_routine_priv: N
             Execute_priv: N
               Event_priv: Y
             Trigger_priv: Y
    2 rows in set (0.31 sec)
    优化的操作:
    MariaDB [mysql]> truncate table mysql.db;
    Query OK, 0 rows affected (0.01 sec)
    MariaDB [mysql]> select * from mysql.db where db like 'test%' G
    Empty set (0.00 sec)

    15.6、如何优化/root/.mysql_history文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    [root@LVS-DR01 ~]# tail -20 ~/.mysql_history 
    flush privileges;
    select user,host from mysql.user;
    delete from mysql.user where user="'molewan1'@'10.10.10.%'";
    delete from mysql.db where user='molewan1'@'10.10.10.%';
    select user,host from mysql.user;
    delete from mysql.user where user=molewan1;
    delete from mysql.user where user='molewan1@10.10.10.%';
    flush privileges;
    select user,host from mysql.user;
    delete from mysql.user where user="molewan1" and host ="10.10.10.%";
    flush privileges;
    select user,host from mysql.user;
    delete from mysql.user where user="molewan" and host="10.10.10.%";
    flush privileges;
    create user molewan@'10.10.10.%' identified by 'molewan';
    select user,host from mysql.user;
    desc mysql.user;
    update mysql.user set password=password('admin') where user='admin' and host='localhost';
    flush privileges;
    q

    说明:在Linux/Unix系统下,使用mysql命令行工具执行的所有操作,都会被记录到一个名为.mysql_history的文件中,该文件默认保存在当前用户的根目录下

    这个设定原本是为了提升mysql命令行操作体验,在mysql中操作命令就可以上下翻动了,但某些情况下缺会造成隐患。

    15.7、如何历史记录消除隐患

    1
    2
    3
    4
    5
    6
    7
    8
    方法1:基于DB层的操作
    修改MYSQL_HISTFILE环境变量,将其值改为/dev/null,这样所有的操作都会被输出到空,操作的历史
    自然不会被保留。
    方法2:基于系统层操作
    仍旧保留这个文件,但是改文件实际上未/dev/null的软链接,这样所有的操作都会被输出到空,操作的历史自然不会被保留。
    ln -f -s /dev/null ~/.mysql_history
    [root@LVS-DR01 ~]# tail -20 ~/.mysql_history 
    这时候就没有输出了

    到此,安装完成后的基本优化已经完成

  • 相关阅读:
    2019-2020-1 20175313 20175328 20175329 实验五 通讯协议设计
    2019-2020-1 20175313 《信息安全系统设计基础》第十周学习总结
    2019-2020-1 20175313 20175328 20175329 实验四 外设驱动程序设计
    2019-2020-1 20175313 《信息安全系统设计基础》第九周学习总结
    2019-2020-1 20175313 20175328 20175329 实验三 并发程序
    2019-2020-1 20175313 20175328 20175329 实验二 固件程序设计
    2019-2020-1 20175313 《信息安全系统设计基础》第七周学习总结
    2019-2020-1 20175313 20175328 20175329 实验一 开发环境的熟悉
    protobuf---messge嵌套get set
    proto变量风格
  • 原文地址:https://www.cnblogs.com/gered/p/10306757.html
Copyright © 2011-2022 走看看