過了一個國慶,同事反映說seafile服務掛掉了,沒法正常鏈接。php
剛纔解決了一下,把相關問題簡要記錄一下:html
1.首先鏈接阿里雲,得到相關IP地址(若是已知IP地址,則不須要該步驟)mysql
2.經過xshell或者其餘ssh工具鏈接上去(此類工具不少,好比putty、secureCRT、MobaXterm Personal Edition等)sql
3.首次查看seafile進程是否正常: ps -ef | grep seafile ;shell
4.嘗試啓動seafile服務,並監控和檢查相關log,看是否正常:數據庫
報錯信息以下:django
$ ./seafile.sh start
SQLException: Failed to start connection pool -- Access denied for user 'root'@'localhost' (using password: YES)
raised in ConnectionPool_start at src/db/ConnectionPool.c:287
failed to run "ccnet-server -t"
5.在上面這一步報錯,則相應須要解決該問題。
下面是一些解決步驟:
(1)查看相關log位置:vi /home/haochuang/Seafile/logs/seafile.log,更多log:
[root@AY140714154144069b22Z ~]# ls -la /home/tuyou/Seafile/logs
total 6236
drwxr-xr-x 2 root root 4096 Oct 10 15:06 .
drwxrwxr-x 8 haochuang haochuang 4096 Oct 10 11:03 ..
-rw-r--r-- 1 root root 213261 Oct 10 15:07 ccnet.log
-rw-r--r-- 1 root root 24055 Oct 10 15:06 controller.log
-rw-r--r-- 1 root root 222309 Oct 10 15:06 seafile.log
-rw-r--r-- 1 root root 5892209 Oct 10 10:50 seahub_django_request.log
-rw-r--r-- 1 root root 0 May 13 14:00 seahub.log
(2)檢查磁盤空間是否足夠:df -lh
(3)查看當前已經啓動的seafile服務,經過
pgrep 命令 來檢查 seafile/seahub 的進程是否在運行:
$ pgrep -f seafile-controller # 檢查 seafile 進程是否在運行
$ pgrep -f "manage.py run_gunicorn" # 檢查 seahub 進程是否在運行
完全殺掉相關服務,要強行殺死 seafile/seahub 進程,把上面的 pgrep 換成
pkill 命令便可:
$ pkill -f seafile-controller
$ pkill -f "manage.py run_gunicorn"
$ pkill -f httpserver
重啓seafile:
./seafile.sh restart # 中止當前的 seafile 進程,而後重啓 seafile
./seahub.sh restart # 中止當前運行的 seahub 進程,並在 8000 端口從新啓 seahub
(4)檢查相關musql配置狀況,並直接手動鏈接;
(5)重置mysql數據庫帳號密碼,因爲該機器上面我當時配置了seafile和redmine,端口分別爲 3306 和 3307,擔憂會有影響的話,能夠備份部分關鍵文件:
發現個人mysql鏈接時候報錯信息以下:
Mysql ERROR 1045 (28000): Access denied for user 'root'@'localhost'
問題的解決
查了一下,發現這種問題須要強行從新修改密碼,方法以下:
/etc/init.d/mysqld stop (service mysqld stop )
/usr/bin/mysqld_safe --skip-grant-tables
另外開個SSH鏈接
[root@localhost ~]# mysql
mysql>use mysql
mysql>update user set password=password("123456") where user="root";
mysql>flush privileges;
mysql>exit
(6)修改完成以後再次重啓seafile,發現基本正常了。bash
(7)其餘補充信息:服務器
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)ssh
關於該問題,在解決過程當中,看到網上的朋友說有多種解決辦法:
Red Hat Enterprise Linux 5服務器上mysql啓動報錯:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
緣由1-啓動命令錯誤:
我開始的時候直接輸入命令:mysql start
正確的啓動命令是:
/etc/rc.d/init.d/mysql start
緣由2-配置文件錯誤:
檢查etc下面的my.cnf以下內容:
[client]
#password = your_password
port = 3306
socket = /usr/mysql-data/mysql.sock
# Here follows entries for some specific programs
# The MySQL server
[mysqld]
port = 3306
socket = /usr/mysql-data/mysql.sock
緣由3-啓動文件錯誤:
須要修改MySQL啓動腳本/etc/rc.d/init.d/mysql,
其中datadir= ? 一行檢查下!
緣由4-前提是你在使用php鏈接時候報錯!
在/etc/php.ini修改mysql.default_socket的值設置爲:
mysql.default_socket=/var/lib/mysql/mysql.sock
回到終點設置個鏈接:ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
(在/etc/php.ini中mysql.default_socket這個文件中,關於mysql.default_socket的值的說明是這樣的,
;Default socket name for local MySQL connects. If empty, uses the built-in MySQL defaults.
這個值一開始是空的,也就是說,若是咱們不主動去修改的話,php將會使用內建在mysql中的默認值)
另外一篇文章:
Mysql ERROR 1045 (28000): Access denied for user 'root'@'localhost'
問題的解決
這種問題須要強行從新修改密碼,方法以下:
/etc/init.d/mysqld stop (service mysqld stop )
/usr/bin/mysqld_safe --skip-grant-tables
另外開個SSH鏈接
[root@localhost ~]# mysql
mysql>use mysql
mysql>update user set password=password("123456") where user="root";
mysql>flush privileges;
mysql>exit
pkill -KILL -t pts/0 可將pts爲0的**用戶(以前運行mysqld_safe的用戶窗口)強制踢出
正常啓動 MySQL:/etc/init.d/mysqld start (service mysqld start)
注意:另外還遇到須要service mysql star才能啓動service mysql stop才能中止。
還有直接使用mysql不能找到命令,錯誤爲「bash: mysql: command not found」能夠直接**mysql的安裝目錄中的bin文件夾跟絕對路徑運行命令,還有的須要加./mysql 才能執行。
......
總之,其實不少問題乍一看,被矇住了,可是隻要靜下心看一下,耐心去解決,其實不少問題並非問題。