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
安裝步驟
下載
- 打開官方下載地址://dev.mysql.com/downloads/mysql/5.7.html。
(根據自己對應是系統進行選擇,這裡演示的是Linux系統的安裝)
- 直接點擊下面的just start my download即可下載,這裡用的是windows系統下載,下載完成將文件上傳到Linux。
- 當然也可以在Linux系統中用wget方式進行下載,命令是:wget //dev.mysql.com/downloads/file/?id=494229
解壓
- 創建文件夾命令
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;
- 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結尾的文件