­

Linux安裝mysql

Linux中卸載mysql數據庫(第一次安裝請略過)

檢查是否安裝mysql

使用一下命令查看當前安裝mysql的情況,是否安裝了mysql

rpm -qa|grep -i mysql

​ 顯示之前安裝了:

 MySQL-client-5.5.25a-1.rhel5

 MySQL-server-5.5.25a-1.rhel5

​ 停止mysql服務、刪除之前安裝的mysql

​ 刪除命令:rpm -e –nodeps 包名

rpm -ev MySQL-client-5.5.25a-1.rhel5
rpm -ev MySQL-server-5.5.25a-1.rhel5 

查找mysql的目錄

查找mysql的目錄,並且刪除mysql的文件和庫(現在很多都是使用編譯的mysql安裝包進行安裝的,所以查找文件是必須的)

find / -name mysql

​ 查找結果如下(根據個人實際情況):

/var/lib/mysql
/var/lib/mysql/mysql
/usr/lib64/mysql

​ 刪除對應的mysql目錄

rm -rf /var/lib/mysql
rm -rf /var/lib/mysql
rm -rf /usr/lib64/mysql

注意:/etc/my.cnf不會刪除,需要進行手工刪除

rm -rf /etc/my.cnf

檢查是否卸載成功

再次查找機器是否安裝mysql(注意!!!檢查文件情況是必須的 注意!!!)

檢查安裝情況

rpm -qa|grep -i mysql

檢查mysql文件情況

find / -name mysql 

無結果說明卸載(刪除)徹底。

Linux中安裝mysql數據庫

介紹

​ 本次是在linux下安裝mysql數據庫。注意:本文章演示的編譯好的mysql。無需編譯直接安裝即可。

​ 本次演示的mysql版本為: MySQL Community Server 5.7.36

安裝步驟

下載

  • 直接點擊下面的just start my download即可下載,這裡用的是windows系統下載,下載完成將文件上傳到Linux。

解壓

  • 創建文件夾命令
mkdir mysql
  • 在linux根目錄下創建文件夾,將文件上傳到該文件夾下,此文件夾為臨時文件夾,後面會將解壓的文件目錄放入/usr/local目錄下

  • 解壓命令
tar -xzvf mysql.xxxxxx.tar.gz
  • 解壓安裝包:

解壓完成後可以看到如下圖文件夾:

  • 文件移動命令
mv 源文件目錄 目標文件目錄
mv mysql-5.7.36-linux-glib2.12.x86_64 /use/loacl/mysql
  • 將文件夾移動到/usr/local目錄下並重命名為mysql

安裝前準備

  • 1.創建mysql組及mysql用戶,並授權

創建mysql組命令

groupadd 用戶名
groupadd mysql

創建mysql用戶

useradd 授權   用戶組 用戶名 
useeadd -r -g mysql mysql

  • 2.創建數據存放目錄並授權

千萬千萬注意:

這裡是在根目錄(“/”)下創建/data/mysql目錄,不要搞錯了,我是因為沒在根目錄下創建,所有後面初始化時失敗了多次,慘痛的教訓,希望後來人不要重蹈覆轍。(是用於mysql數據的目錄,具體如何使用請網下看)

​回到根目錄下創建數據存放目錄/data/mysql:

mkdir 授權 文件目錄
mkdir -p /data/mysql

  • 3.配置my.cnf文件

打開文件,或者新建文件命令

vim /文件路徑
vim /etc/my.cnf

打開etc下的my.cnf 文件將下面配置粘貼進去

[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql #指定的是mysql 安裝目錄
datadir=/data/mysql #指定的是mysql數據目錄
socket=/tmp/mysql.sock #mysql端口存放文件
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
#skip_ssl #關閉SSL加密連接
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true
lower_case_table_names=1 # mysql在windows下,默認是對錶名大小寫不敏感的,但是在[linux下,一些系統需要手動設置
#skip-grant-tables #免密碼登陸

  • basedir:指定的是mysql 安裝目錄
  • datadir:指定的是mysql數據目錄
  • socket:mysql端口存放文件
  • skip_ssl : 關閉SSL加密連接
  • lower_case_table_names=1 : mysql在windows下,默認是對錶名大小寫不敏感的,但是在[linux下,一些系統需要手動設置。
  • skip-grant-tables :免密碼登陸 (用戶修改賬號密碼,上面文件沒該配置)

注意:如果安裝的是新版(這裡是mysql-5.7.33),my.cnf會有默認內容,如下,則需要你手動修改datadir、socket、log-error、pid-file幾個參數

初始化數據庫

  • 1.進入mysql的bin目錄:cd /usr/local/mysql/bin
cd /usr/local/mysql/bin 

  • 2.執行初始化並查看mysql賬戶生成的默認密碼:
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize

啟動mysql

  • 1.將mysql.server放置到/etc/init.d/mysql中
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

  • 2.啟動mysql,並查看是否啟動成功
server mysql start --啟動
ps -ef|grep mysql --查詢服務命令

如果啟動成功了,表示mysql安裝成功了!!!

修改密碼

  • 1.進入mysql的bin目錄:
cd /usr/local/mysql/bin
  • 2.執行./mysql -u root -p,輸入的密碼為初始化數據庫時的密碼(啟動客戶端連接命令)。
./mysql -u root -p

顯示mysql>即表示進入mysql成功!!!

  • 3.執行下述命令,修改密碼並刷新權限

修改密碼:

SET PASSWORD = PASSWORD('123456');

設置賬號訪問權限(ip):

ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;

刷新權限:

FLUSH PRIVILEGES;

img

  • 4.重新登錄

這時如果使用(navicat等工具)遠程登錄,會發現無法連接如下圖

navicat下載:

鏈接://pan.baidu.com/s/1aknIUwy2L1Ws2uYL88COng
提取碼:og7l

  • 5.登錄數據庫,執行以下3個命令:

訪問mysql庫:

use mysql  

使root能再任何host都可以訪問:

update user set host = '%' where user = 'root';  

刷新權限:

FLUSH PRIVILEGES;

好了,到此,mysql就可以通過navicat或其它遠程工具登錄使用了!!!

遇到的問題

  • 問題1:初始化時提示:–initialize specified but the data directory has files in it. Aborting.

原因分析:是因為根目錄下data目錄下有文件

解決辦法:在根目錄下使用rm -rf data,將data文件夾刪掉,重新創建一個/data/mysql文件目錄即可,命令為:mkdir -p /data/mysql

  • 問題2:初始化時提示:log-error set to ‘/var/log/mariadb/mariadb.log’, however file don’t exists. Create writable for user ‘mysql’.

    原因分析:沒有/var/log目錄下沒有mariadb目錄和mariadb.log文件

    解決辦法:創建文件目錄和文件,然後給Mysql用戶賦權即可

--創建文件夾
mkdir /var/log/mariadb
--創建日誌文件
touch /var/log/mariadb/mariadb.log
--授權
chown -R mysql:mysql  /var/log/mariadb/
  • 問題3:重啟mysql,報錯,提示:ERROR! The server quit without updating PID file (/data/mysql/localhost.localdomain.pid).

查看了這個目錄,發現並沒有localhost.localdomain.pid這個文件

百度了一下這個文件的作用,以下是別人的解決辦法:

1.localhost.localdomain.pid 保存的是MySQL所啟動的後台服務進程的PID值,如果這個文件丟了,可以創建一些,然後把一個數字放入其中。
 
2./tmp/mysql.sock 文件的作用是 MySQL通過這個unix socket 文件來與本地的客戶端進行通信的。如果此文件丟了,可以通過重新啟動服務器來重新創建它。
 
不建議將此文件放到 /tmp目錄下。
 
丟失後在mysql的安裝目錄是沒有*.pid,mysql.sock文件造成mysql無法重啟,解決方法是重新創建hostname.pid文件
(1)ps -ef |grep mysql 找出mysql的進程,如:6225;
(2)vi hostname.pid寫入6225
(3)重新啟動mysql正常.

於是新建localhost.localdomain.pid這個文件,然後重啟,注意:新建後不能保存一個空文件,需要在裏面輸入一些數字

參考資料:

//blog.csdn.net/qq_37598011/article/details/93489404

總結:

當mysql啟動不了,如果根據啟動報錯解決不了,一定要學會看mysql錯誤日誌。畢竟每個人所遇的情況不一定都是一樣的,造成mysql啟動不了的原因真的是太多了。

錯誤日誌路徑:my.cnf (Windows是my.ini)文件中的datadir指定路徑中已.err結尾的文件

Tags: