NextCloud搭建
NextCloud是一个私有云软件
搭建的整个过程十分简单,主要有两个步骤:
- 使用docker启动NextCloud应用
- 为NextCloud配置MySQL数据库
Docker搭建NextCloud应用
拉取镜像:
docker pull nextcloud
启动应用:
docker run -d \
--name nextcloud \
-p 8000:80 \
-v /root/apps/nextcloud/data:/var/www/html \
nextcloud
没什么问题的话就启动成功了,使用IP:8000访问下应该就可以看到nextcloud的初始化界面
配置MySQL数据库
nextcloud自带SQLit数据库,但是性能较低,官方推荐使用MySQL数据库
如果只是体验一下,完全可以不配置数据库,直接创建一个管理员账户即可
-
登录nextcloud初始化界面
在首次登录nextcloud界面时,是一个初始化界面,要求填写:
- 管理员用户名。注意,用户名与后面数据库账户名是有关联的,比如你的用户名为admin,那么数据库账户名一定要是oc_admin。
- 管理员密码。管理员密码没有重复确认,设置时请慎重
-
MySQL数据库操作
-
创建数据库
create database nextcloud; -
创建账户
create user oc_admin@localhost identified by 'adminpasswd';前面说了,这里的账户一定要与nextcloud账户对应,就是前面加个
oc_ -
为账户赋予访问权限
GRANT ALL PRIVILEGES ON nextcloud.* TO 'oc_admin'@'%' IDENTIFIED BY 'adminpasswd' -
刷新权限
flush privileges;
-
-
填写nextcloud初始化界面上的配置
- oc_admin
- adminpasswd
- nextcloud
- ip:3306
上面的MySQL地址部分是比较奇怪的,MySQL数据库与nextcloud应用在同一台服务器上,但报错,找不到服务器地址。最后用了自己服务器的域名才成功的
搭建过程中踩的坑
-
nextcloud用户名定义为aa,数据库用户名填写bb,报错:ERROR 1044(42000): Access denied for user 'oc_aa'@'localhost' to database,oc_aa没有nextcloud数据库权限。
这时候就很奇怪了,数据库账户为bb,跟aa有半毛钱关系?百度了下,也有外国友人遇到同样的问题,但是并没有给出解决方案。自己推理一下,既然说oc_aa没有权限,那么就把数据库账户取名oc_bb吧,结果就成了。。。
-
数据库地址填写 localhost 或者 127.0.0.1
这里又报错:SQLSTATE[HY000] [2002] No such file or directory,找不到数据库
原因:nextcloud 和 MySQL 都是启动在容器中, 127.0.0.1 肯定不行。。。 -
MySQL数据库相关
由于上面第二个问题,需要在MySQL数据库中进行用户的添加和删除操作,平时大多在搞增删改查,关于MySQL用户的操作还真不熟练,这里记录一下
# 切换数据库 use mysql; # 查询数据库中的所有用户 select user from user; # 删除用户 delete from user where user=`username` # 上面的操作可能会触发保护机制,使用一种临时策略去除保护机制,再重新登录MySQL时,保护机制会恢复 # 保护机制报错:ERROR 1175: You are using safe update mode set sql_safe_updates=0; # 然后再执行delete操作就好了 # 在删除用户后,再次创建与删除用户同名的用户时报错:ERROR 1396 (HY000): Operation CREATE USER failed for 'XXXX'@'XXXX',原因是没有刷新,刷新一下权限就好了 flush privileges;