1. 程式人生 > >Linux/CentOS安裝mysql、自定義資料目錄、配置使用者客戶端登入

Linux/CentOS安裝mysql、自定義資料目錄、配置使用者客戶端登入

機房新來的機器,我配完了地址做好了分割槽,裝了好幾天資料庫,記下來以後參考。[為此展開了一場深夜辯論賽]

好吧 說說怎麼裝吧,先看看機器上有沒有mysql,然後發現我這臺機器已經有了,於是就用find / -name mysql|xargs rm -rf刪了舊版本mysql相關的檔案(這個命令能刪但是刪的不乾淨,怎麼刪乾淨歡迎拍磚)

  • whereis mysql
  • find / -name mysql|xargs rm -rf

刪完了,準備新版本的安裝檔案放到伺服器某個你喜歡的位置,下載地址:

我選擇的5.7.23版本的mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz,存在/data/software/past/下,複製,解壓,重新命名,刪除壓縮包。

  • cp /data/software/past/mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz /usr/local/
  • cd /usr/local/
  • tar -vxf mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz 
  • mv mysql-5.7.23-linux-glibc2.12-x86_64 mysql-5.7.23
  • rm -f mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz 

準備資料存放目錄(因為之前存在過資料量大空間不夠的情況),修改許可權

  • mkdir -p /data/mysql/data
  • cd /data/mysql/
  • chown -R mysql:mysql ./

進到安裝目錄,修改mysql許可權、安裝,指定基本目錄和資料目錄

  • cd /usr/local/mysql-5.7.23/
  • chown -R mysql:mysql ./
  • ./bin/mysqld --user=mysql --basedir=/usr/local/mysql-5.7.23/ --datadir=/data/mysql/data/ --initialize

 執行完上一步驟會有幾個warnning,note,最後一行有root的臨時密碼,必須記下來,登入要用,不然還得費勁百度。

然後修改mysql-5.7.23資料夾下root組許可權,複製相關檔案

  • cd /usr/local/mysql-5.7.23/
  • chown -R root .
  • cp support-files/mysql.server /etc/init.d/mysqld
  • chmod 755 /etc/init.d/mysqld
  • cp /usr/local/mysql-5.7.23/bin/my_print_defaults /usr/bin/

修改配置檔案/etc/init.d/mysqld,增加3句目錄埠資訊。

  • vi /etc/init.d/mysqld
  • basedir=/usr/local/mysql-5.7.23/
  • datadir=/data/mysql/data/
  • port=3306

 至此,基本是可以啟動mysql服務了,如果出現了跟我一樣的錯誤PID file [FAILED],就直接刪了/etc/my.cnf檔案就好,等需要的時候再增加配置,我懶得去改了,反正/etc/my.cnf有固定模板。

  • service mysqld start
  • 錯誤資訊:Starting MySQL...The server quit without updating PID file [FAILED]b/mysql/110601.pid).
  • rm -f /etc/my.cnf

 現在再執行service mysqld start的時候基本會看到綠色的OK了,但是想執行mysql -uroot -p的時候能找到mysql還需要在/etc/profile裡配置環境變數,可是我發現配了之後當時是可以的,重啟電腦或者關了介面再開啟的時候又找不到了,於是就需要一次性做個軟鏈永久解決這個問題了,程式碼過程如下:

  • vi /etc/profile
  • export PATH=$PATH:/usr/local/mysql-5.7.23/bin
  • source /etc/profile
  • mysql -uroot -p (這個時候貼的密碼就是上面自動生成的vzfH,iy;P8rk這堆亂七八糟的,下一句修改密碼,不然你再進來還得用這複雜的密碼)
  • SET PASSWORD = PASSWORD('123456');

然後重啟後又找不到mysql服務了,做軟鏈,之後就可以了

  • 報錯:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
  • ln -s  /usr/local/mysql-5.7.23/bin/mysql  /usr/bin

現在還有一個問題,機器重啟後mysql沒有自啟動,用chkconfig --list檢視已經自啟動的是哪些服務,缺少mysql的話就add一個mysqld即可

  • chkconfig --list
  • chkconfig --add mysqld

現在基本就可以進去資料庫了,領導的需求是還需要有個使用者,可以客戶端登入資料庫,可以匯入檔案到表裡

  • mysql -uroot -p
  • use mysql;
  • CREATE USER 'meizi'@'localhost' IDENTIFIED BY '123456'; 
  • CREATE USER 'meizi'@'%' IDENTIFIED BY '123456'; 
  • grant all privileges on *.* to 'meizi'@'%' identified by '123456';
  • flush privileges;

以下sql語句檢視、修改是否可遠端,在mysql庫的表裡,root使用者登入,詳情參考我的另一篇部落格:https://blog.csdn.net/caihuashen/article/details/79408755

  • select user,host from user;
  • update user set host = '%' where host = 'localhost';
  • update user set host = '%' where user = 'root';

同事上傳檔案到資料表裡是報錯,原來是secure_file_priv設定限制讀取匯出資料檔案,show VARIABLES like '%secure%';發現secure_file_priv是NULL,就是禁止讀寫檔案,想辦法改成空值或者根目錄後restart即可。

  • 錯誤程式碼: 1290 The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
  • mysql-uroot -p
  • show VARIABLES like '%secure%';(結果裡有 secure_file_priv  NULL )
  • vi /etc/my.cnf
  • [mysqld]片段下增加下面這個配置,我一開始加在了[mysqld_safe]下,無效
  • secure_file_priv=''
  • service mysqld restart

最後再加一個tip:當你在伺服器之間可以客戶端登入、在VPN機器上登不上的時候可能是你領導把你VPN的3306埠禁了。。。What a funny day~ 我好天真、好沒鞋、好可愛。

參考 感謝 這篇:https://www.cnblogs.com/kanyun/p/8075414.html