記錄一次安裝mysql纸镊,明明給權限了但卻報無權 的錯誤日志
今天在CentOS7上安裝mysql5.7.31時出現(xiàn)了一個非常奇怪的問題,
mysql也裝了很多次了概疆,還是像往常一樣妆绞,創(chuàng)建用戶組,解壓工碾,給文件夾賦用戶和組啦逆,創(chuàng)建配置文件。楣颠。尽纽。
本來很順利,但就在我初始化數(shù)據(jù)庫的時候童漩,一個經(jīng)常見但又讓我摸不著頭腦的問題出現(xiàn)了弄贿!
初始化的時候系統(tǒng)報出了一個錯誤,如下:
[root@host-mysql bin]# ./mysqld --initialize --user=mysql
mysqld: Can't change dir to '/mnt/software/mysql/data/' (Errcode: 13 - Permission denied)
2020-12-09T03:17:15.208697Z 0 [ERROR] failed to set datadir to /mnt/software/mysql/data/
2020-12-09T03:17:15.208799Z 0 [ERROR] Aborting
這個錯誤很明顯矫膨,data文件夾沒有權限嘛差凹,給它加入用戶組,附上權限就行了侧馅。
[root@host-mysql bin]# chown -R mysql:mysql ../data
[root@host-mysql bin]# ll
drwxr-xr-x 2 mysql mysql 4096 Jun 2 2020 bin
drwxr-x--- 2 mysql mysql 4096 Dec 9 11:17 data
drwxr-xr-x 2 mysql mysql 4096 Jun 2 2020 docs
drwxr-xr-x 3 mysql mysql 4096 Jun 2 2020 include
drwxr-xr-x 5 mysql mysql 4096 Jun 2 2020 lib
-rw-r--r-- 1 mysql mysql 275393 Jun 2 2020 LICENSE
drwxr-x--- 2 mysql mysql 4096 Dec 8 17:31 logs
drwxr-xr-x 4 mysql mysql 4096 Jun 2 2020 man
-rw-r--r-- 1 mysql mysql 587 Jun 2 2020 README
drwxr-xr-x 28 mysql mysql 4096 Jun 2 2020 share
drwxr-xr-x 2 mysql mysql 4096 Jun 2 2020 support-files
OK 完成危尿,再次初始化:
[root@host-mysql-001 bin]# ./mysqld --initialize --user=mysql
mysqld: Can't change dir to '/mnt/software/mysql/data/' (Errcode: 13 - Permission denied)
2020-12-09T03:34:08.772580Z 0 [ERROR] failed to set datadir to /mnt/software/mysql/data/
2020-12-09T03:34:08.772692Z 0 [ERROR] Aborting
嗯?馁痴?谊娇??罗晕?济欢??
我一臉的黑人問號小渊?法褥??
難道是用戶權限不夠酬屉?給它加上777總該夠了吧半等;
操作:
[root@host-mysql-001 mysql]# chmod 777 data
[root@host-mysql-001 mysql]# ll
total 312
drwxr-xr-x 2 mysql mysql 4096 Jun 2 2020 bin
drwxrwxrwx 2 mysql mysql 4096 Dec 9 11:34 data
drwxr-xr-x 2 mysql mysql 4096 Jun 2 2020 docs
繼續(xù)初始化:
[root@host-mysql-001 bin]# ./mysqld --initialize --user=mysql
mysqld: Can't change dir to '/mnt/software/mysql/data/' (Errcode: 13 - Permission denied)
2020-12-09T03:37:14.624800Z 0 [ERROR] failed to set datadir to /mnt/software/mysql/data/
2020-12-09T03:37:14.624910Z 0 [ERROR] Aborting
是它是它還是它,于是我就開始問度娘,網(wǎng)上有的說是selinux的問題酱鸭,需要關閉selinux吗垮。
好,那就關閉它凹髓;可我一查電腦烁登,我的selinux本來就關著的啊蔚舀!
[root@host-mysql-001 ~]# getenforce
Disabled
問題解決
于是我又搜了半天饵沧,結果要么說忘記給用戶和組了,要么就是說要關掉selinux赌躺;
更神奇的是我這個包是我上周才在另一臺CentOS7上裝過的啊狼牺,一模一樣的流程,一模一樣的文件夾結構礼患,甚至連路徑都是一模一樣的是钥,但這個就是不行!
后來我抱著嘗試的心態(tài)缅叠,把data文件夾和logs文件夾提出來直接放到跟下悄泥;
mkdir -p /mysql/data
cd /mysql
mkdir logs
chown -R mysql:mysql /mysql
然后在my.cnf配置文件中將dada的文件路徑改成新創(chuàng)建的data
datadir=/mysql/data
log-error=/mysql/logs/mysql-error.log
神奇的一幕竟然出現(xiàn)了,竟然初始化成功了7袅弧5簟!
一波三折
正當我高興初始化成功時领曼,現(xiàn)實又讓我明白了一次什么叫“生活不止眼前的茍且還有永無止境的茍且”
當我啟動服務時鸥鹉,它又給我拋出了這個:
Starting MySQL.2020-12-09T06:33:02.113489Z mysqld_safe error: log-error set to '/mysql/logs/mysql-error.log', however file don't exists. Create writable for user 'mysql'.
ERROR! The server quit without updating PID file (/mysql/data/host-mysql-001.pid).
于是我又查看了一下data文件夾
[root@host-mysql-001 ~]# ll /mysql/data/
total 110652
-rw-r----- 1 mysql mysql 56 Dec 9 13:26 auto.cnf
-rw------- 1 mysql mysql 1676 Dec 9 13:26 ca-key.pem
-rw-r--r-- 1 mysql mysql 1112 Dec 9 13:26 ca.pem
-rw-r--r-- 1 mysql mysql 1112 Dec 9 13:26 client-cert.pem
-rw------- 1 mysql mysql 1680 Dec 9 13:26 client-key.pem
-rw-r----- 1 mysql mysql 431 Dec 9 13:26 ib_buffer_pool
-rw-r----- 1 mysql mysql 12582912 Dec 9 13:26 ibdata1
-rw-r----- 1 mysql mysql 50331648 Dec 9 13:26 ib_logfile0
-rw-r----- 1 mysql mysql 50331648 Dec 9 13:26 ib_logfile1
drwxr-x--- 2 mysql mysql 4096 Dec 9 13:26 mysql
drwxr-x--- 2 mysql mysql 4096 Dec 9 13:26 performance_schema
-rw------- 1 mysql mysql 1680 Dec 9 13:26 private_key.pem
-rw-r--r-- 1 mysql mysql 452 Dec 9 13:26 public_key.pem
-rw-r--r-- 1 mysql mysql 1112 Dec 9 13:26 server-cert.pem
-rw------- 1 mysql mysql 1676 Dec 9 13:26 server-key.pem
drwxr-x--- 2 mysql mysql 12288 Dec 9 13:26 sys
自己都在data文件夾下創(chuàng)建了這么多文件了,怎么就不能創(chuàng)建一個pid文件了呢庶骄?
此時我意識到毁渗,可能是mysql用戶的問題,于是我把my.cnf中的user改成了root瓢姻;
果然可以啟動了祝蝠。
問題探究
那么原因究竟是什么呢?來幻碱,騙,來细溅,偷襲褥傍,年輕人不講武德,我今天就治治你喇聊。
于是我又將用戶改回mysql恍风,重啟,果然還是原來的錯;
我們原來的mysql用戶的shell用的是nologin朋贬,現(xiàn)在我們將shell改為false
usermod -s /bin/false mysql
再次啟動凯楔;還是原來的錯;
再改為/bin/bash
usermod -s /bin/bash mysql
再次啟動锦募,還是不行摆屯。
試來試去好像只有root可以,這是什么原因呢糠亩?是我哪里遺漏了什么嗎虐骑?有沒有大佬給解答一下。