NextCloud搭建
NextCloud是一個(gè)私有云軟件
搭建的整個(gè)過(guò)程十分簡(jiǎn)單,主要有兩個(gè)步驟:
- 使用docker啟動(dòng)NextCloud應(yīng)用
- 為NextCloud配置MySQL數(shù)據(jù)庫(kù)
Docker搭建NextCloud應(yīng)用
拉取鏡像:
docker pull nextcloud
啟動(dòng)應(yīng)用:
docker run -d \
--name nextcloud \
-p 8000:80 \
-v /root/apps/nextcloud/data:/var/www/html \
nextcloud
沒(méi)什么問(wèn)題的話(huà)就啟動(dòng)成功了,使用IP:8000訪(fǎng)問(wèn)下應(yīng)該就可以看到nextcloud的初始化界面
配置MySQL數(shù)據(jù)庫(kù)
nextcloud自帶SQLit數(shù)據(jù)庫(kù),但是性能較低,官方推薦使用MySQL數(shù)據(jù)庫(kù)
如果只是體驗(yàn)一下,完全可以不配置數(shù)據(jù)庫(kù),直接創(chuàng)建一個(gè)管理員賬戶(hù)即可
-
登錄nextcloud初始化界面
在首次登錄nextcloud界面時(shí),是一個(gè)初始化界面,要求填寫(xiě):
- 管理員用戶(hù)名。注意,用戶(hù)名與后面數(shù)據(jù)庫(kù)賬戶(hù)名是有關(guān)聯(lián)的,比如你的用戶(hù)名為admin,那么數(shù)據(jù)庫(kù)賬戶(hù)名一定要是oc_admin。
- 管理員密碼。管理員密碼沒(méi)有重復(fù)確認(rèn),設(shè)置時(shí)請(qǐng)慎重
-
MySQL數(shù)據(jù)庫(kù)操作
-
創(chuàng)建數(shù)據(jù)庫(kù)
create database nextcloud; -
創(chuàng)建賬戶(hù)
create user oc_admin@localhost identified by 'adminpasswd';前面說(shuō)了,這里的賬戶(hù)一定要與nextcloud賬戶(hù)對(duì)應(yīng),就是前面加個(gè)
oc_ -
為賬戶(hù)賦予訪(fǎng)問(wèn)權(quán)限
GRANT ALL PRIVILEGES ON nextcloud.* TO 'oc_admin'@'%' IDENTIFIED BY 'adminpasswd' -
刷新權(quán)限
flush privileges;
-
-
填寫(xiě)nextcloud初始化界面上的配置
- oc_admin
- adminpasswd
- nextcloud
- ip:3306
上面的MySQL地址部分是比較奇怪的,MySQL數(shù)據(jù)庫(kù)與nextcloud應(yīng)用在同一臺(tái)服務(wù)器上,但報(bào)錯(cuò),找不到服務(wù)器地址。最后用了自己服務(wù)器的域名才成功的
搭建過(guò)程中踩的坑
-
nextcloud用戶(hù)名定義為aa,數(shù)據(jù)庫(kù)用戶(hù)名填寫(xiě)bb,報(bào)錯(cuò):ERROR 1044(42000): Access denied for user 'oc_aa'@'localhost' to database,oc_aa沒(méi)有nextcloud數(shù)據(jù)庫(kù)權(quán)限。
這時(shí)候就很奇怪了,數(shù)據(jù)庫(kù)賬戶(hù)為bb,跟aa有半毛錢(qián)關(guān)系?百度了下,也有外國(guó)友人遇到同樣的問(wèn)題,但是并沒(méi)有給出解決方案。自己推理一下,既然說(shuō)oc_aa沒(méi)有權(quán)限,那么就把數(shù)據(jù)庫(kù)賬戶(hù)取名oc_bb吧,結(jié)果就成了。。。
-
數(shù)據(jù)庫(kù)地址填寫(xiě) localhost 或者 127.0.0.1
這里又報(bào)錯(cuò):SQLSTATE[HY000] [2002] No such file or directory,找不到數(shù)據(jù)庫(kù)
原因:nextcloud 和 MySQL 都是啟動(dòng)在容器中, 127.0.0.1 肯定不行。。。 -
MySQL數(shù)據(jù)庫(kù)相關(guān)
由于上面第二個(gè)問(wèn)題,需要在MySQL數(shù)據(jù)庫(kù)中進(jìn)行用戶(hù)的添加和刪除操作,平時(shí)大多在搞增刪改查,關(guān)于MySQL用戶(hù)的操作還真不熟練,這里記錄一下
# 切換數(shù)據(jù)庫(kù) use mysql; # 查詢(xún)數(shù)據(jù)庫(kù)中的所有用戶(hù) select user from user; # 刪除用戶(hù) delete from user where user=`username` # 上面的操作可能會(huì)觸發(fā)保護(hù)機(jī)制,使用一種臨時(shí)策略去除保護(hù)機(jī)制,再重新登錄MySQL時(shí),保護(hù)機(jī)制會(huì)恢復(fù) # 保護(hù)機(jī)制報(bào)錯(cuò):ERROR 1175: You are using safe update mode set sql_safe_updates=0; # 然后再執(zhí)行delete操作就好了 # 在刪除用戶(hù)后,再次創(chuàng)建與刪除用戶(hù)同名的用戶(hù)時(shí)報(bào)錯(cuò):ERROR 1396 (HY000): Operation CREATE USER failed for 'XXXX'@'XXXX',原因是沒(méi)有刷新,刷新一下權(quán)限就好了 flush privileges;