1. 源碼屋首頁
  2. 站長學院
  3. 搭建教程

MySQL – 解決root用戶下仍然出現權限問題

關鍵詞(Key Words)

ERROR 1006 (HY000): Can’t create databaseStartingMySQL. The server quit without updating PID fileMySQL 數據庫目錄權限問題

開發環境

系 統:CentOS Linux release 7.5.1804 (Core)MySQL版本:MySQL 5.6

問題場景描述

在某次操作中,我作死用 find 和 chown 命令行修改文件/文件夾的權限和所有者,后來簡單粗暴地把 www 文件夾的權限改回755[1],把文件的權限改為644;所有者全部改為root,就在這個時候,一個隱形的大地雷就被我親手埋下了。。

當我第二天再數據庫中建立一個新的數據庫的時候,我發現,無論我是使用數據庫的普通用戶,還是使用 root 用戶登錄,他都好像開玩笑地告訴我:

ERROR 1006 (HY000): Can’t create database

我立馬覺得這不對勁,一定是自己埋下的深坑。。我把 ERROR 復制到搜索引擎上一搜索,發現大多數說的是權限,于是想起自己干起的好事,就開始尋找起恢復默認權限的方法(可惜沒有備份),這折騰著折騰著我重啟了 mysqld 服務,并且令人驚訝的是,shutdown OK,Start failed,又報了一個錯誤:

Starting MySQL.The server quit without updating PID file

[捂臉][捂臉] 我就開始找 MySQL 的日志,發現沒有報錯,并且接下來的每次重啟都沒有記錄在日志中,

這讓我有種剛掉一個坑還沒出來,發現不小心又掉進另外一個坑的感覺。。

但是還好堅持了一個上午,直到下午才發現,原來是同一個問題的導致的:MySQL數據目錄可能存在權限問題。在你看完解決方案之后,也許你也就明白了。

解決方案

打開/etc/my.cnf

[mysqld]中找到兩個信息:

datadir—— 這是你的數據庫存取數據的地方 , 例如我的是datadir = /www/server/data,/www/server/data就是我的數據目錄;log-bin—— 這是存在日志的地方,不過有可能只看到log-bin=mysql-bin,這里默認沒有修改的話,mysql-bin是在上面的datadir。

先看錯誤日志

打開到你的datadir文件夾位置 , 有一個 ***.err 的文件,這是 MySQL 的一個錯誤日志,你可以使用 vim 打開查看是否有什么錯誤的信息;

下面是關鍵的兩步,也是導致出現上面兩個問題的原因:

MySQL每次開始服務的時候要先在 DATADIR 中創建一個 ****.pid 文件,關閉服務的時候就會刪除它;因為上次這里面整個文件夾(包括文件夾中的內容)的所有者被我不小心修改為root了,因此 MySQL 沒有權限往其中新建一個 ****.pid 文件 ,因此報了第二個的錯誤;另外,為什么我一開始可以登陸 MySQL ,卻在root用戶的時候居然無法進行新建數據庫的操作呢?我猜想可能是因為,我之前的文件夾的權限是755,文件的是644的原因;也就是用戶組和公共組都可以讀取,但無法寫入,所以才會報第一個錯誤!

修改的 datadir 的所有者

**注意:**記得把 YOUR_DATADIR 就是我們剛才找到datadir

1 $sudochown–Rmysql:mysqlYOUR_DATADIR

修改 datadir 里面文件以及文件夾的權限:

建議數據庫數據目錄的權限為 700 ,文件的為660

文件夾權限修改為700 :

1 $sudofindYOUR_DATADIR–typed–execchmod700{};

文件權限修改為660 :

1 $sudofindYOUR_DATADIR–typef–execchmod660{};

重啟MySQL服務

到這里,我們就可以重新再試試

1 $sudo/etc/init.d/mysqldrestart

如果出現 [OK] ,就快大功告成啦!!

重新登陸 MySQL

1

2

3

mysql>createdatabase

57EN;QueryOK,

1rowaffectedTime:0.001s

終于跳出坑啦,雖然折騰了這么久,但是這讓我對 MySQL 有了更深的認識,從之前只知道如何使用 MySQL,到現在明白原來數據庫從服務開始它創建一個.pid 文件(MySQL 服務的進程),原來它存放的數據和日志都在它的DATADIR中。我想接下來有必要深入了解的日志,遇到問題時,可以透過日志去發現問題,解決問題。

[1] 文件夾權限 755:

在 Linux 系統中,關于文件/文件夾權限,有三類操作對象(所有者、用戶組、公共組)各自有3個權限(讀、寫、執行),Linux 系統希望通過以下數字規則就能快速知道三類操作對象的對應的權限。

MySQL – 解決root用戶下仍然出現權限問題

其中,4代表讀取的權限,2代表寫入的權限,1代表執行的權限;

7=4+2+1

同一操作對象的權限的數字相加,例如:

755 的權限代表,所有者的權限有讀寫、執行;用戶組的權限有讀取、執行;公共組的權限有讀取、執行。

本文由(源碼屋@)整理自網絡,如轉載請注明出處:http://www.jxorxu.icu/37880.html

本站發布的內容若侵犯到您的權益,請郵件聯系[email protected] ?刪除,我們將及時處理!

=========================================

本站大部分下載資源收集于網絡,不保證其完整性以及安全性,請下載后自行測試。

本站資源僅供學習和交流使用,版權歸資源原作者所有,請在下載后24小時之內自覺刪除。

若作商業用途,請購買正版,由于未及時購買和付費發生的侵權行為,與本站無關。

發表評論

登錄后才能評論

聯系我們

在線咨詢:點擊這里給我發消息

郵件:[email protected]

QR code
欢乐捕鱼人能赢话费么 华东15选5今晚预测号码 山西11选五开奖结果 环岛赛体育彩票规则 浙江20选5开奖号码查询 好的炒股app 上海快3预测下期号码推荐 pk10极速赛车计划软件 官方北京赛车开奖记录 pk10稳赚投注公式 腾讯分分彩如何玩后二组选 北京快3技巧 福建31选7模拟选号 七乐彩带坐标的走势图 湖南快乐十分总动员 比较好的股票交流群 河南体育彩票十一选五