(0.2.3)Mysql安裝——二進制安裝

關鍵詞:mysql安裝,二進制安裝,基於centos6.5,mysql5.7.xhtml

 

Linux平臺下二進制方式安裝卸載mysqlnode

本章節:二進制安裝mysqlmysql

 相關參考資源:https://www.jianshu.com/p/0d628b2f7476linux

官方安裝文檔:https://dev.mysql.com/doc/refman/5.7/en/binary-installation.htmlsql

目錄:5.7.6以後版本shell

一、基於Linux平臺的Mysql項目場景介紹數據庫

二、mysql數據庫運行環境準備-最優配置centos

三、如何下載mysql數據庫bash

四、linux平臺下二進制文件方式安裝mysql架構

4.一、環境檢查(libaio包、卸載現有數據庫,檢查刪除現有數據庫 rpm -qa |grep mysql,-e參數爲刪除)

4.二、安裝過程

(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安裝參考筆記】

五、Linux平臺下經過源碼方式安裝mysql

六、Linux平臺下經過yum方式安裝mysql

七、Linux平臺下經過RPM方式安裝mysql

八、mysql安裝後的配置與運行參數設置

九、mysql安裝後的測試與遠程鏈接

十、mysql基本管理命令

十一、Linux平臺如何卸載mysql版本

 

 

思路:

4.一、環境檢查

  檢查,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 能夠安裝缺乏的文件

 

 

  --刪除系統自帶的mysql

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

    rpm -e --nodeps mysql-libs-5.1.71-1.el6.x86_64   #用這個方式以此刪除全部的,若有依賴報錯可能須要先刪除另一個

    

      若是這種報錯就使用  --nodeps參數,或者直接 yum remove mysql*    

  

4.二、安裝過程

1)下載文件、上傳安裝程序   mkdir -p /mysql/app   使用CRT上傳、XSHELL等工具上傳到該目錄,這裏只作了CRT連接,其餘工具具體能夠百度。 (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

 

(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的支持文件

 

(4)修改權限(受權用戶對解壓目錄的權限)

    chown -R mysql:mysql /mysql      #把Mysql目錄的擁有者設置爲mysql用戶   -R 爲遞歸,表示/mysql即mysql下全部文件/文件夾均生效

(5)配置環境變量(以即可以直接運行mysql命令)

    vi ~/.bash_profile

  在PATH後面加上  ':' 再加上mysql/bin目錄的絕對路徑便可

  

  配置完後,記得source ~/.bash_profile ,這樣才能立馬生效

   PS小建議:

    #全局環境變量:也可使用該句:echo "export PATH=/mysql/app/mysql/bin:$PATH">>/etc/profile ,

    #這樣能夠避免安裝了多個Mysql版本而使用的mysql/mysqld/mysqldump等等bin目錄下的命令是用的其餘版本的)

                     

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

 

  

(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)配置啓動腳本(把數據庫配置成服務以即可以使用 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  (即自定義的參數文件路徑)

    

  

 ######################這一步能夠勝率  結束 ##################################

 

(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

      

      成功

      

(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)遠程鏈接測試

(12)刪除二進制安裝的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
2
3
4
5
6
7
MariaDB [(none)]>  select  version();
+----------------+
| version()      |
+----------------+
| 5.5.52-MariaDB |
+----------------+
1 row  in  set  (0.18 sec)

15.二、刪除多餘的帳號(除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.三、修改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.四、刪除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.五、優化權限字典表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.六、如何優化/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.七、如何歷史記錄消除隱患

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 
這時候就沒有輸出了

到此,安裝完成後的基本優化已經完成

相關文章
相關標籤/搜索