MYSQL默认的数据文件存储目录为/var/lib/mysql。假如要把目录移到/var/www/html/xxxx/data下需要进行下面几步:
1、home目录下建立data目录
cd /var/www/html/xxxx/ mkdir data 2、把MySQL服务进程停掉:
mysqladmin -u root -p shutdown
3、把/var/lib/mysql整个目录移到/var/www/html/xxxx/data
mv /var/lib/mysql /var/www/html/xxxx/data/
这样就把MySQL的数据文件移动到了/var/www/html/xxxx/data/mysql下 (不过好像会把/var/lib/mysql这个目录删除,会对下面ln命令造成问题,所以我又手工创建了一个/var/lib/mysql)
4、找到my.cnf配置文件
如果/etc/目录下没有my.cnf配置文件,请到/usr/share/mysql/下找到*.cnf文件,拷贝其中一个到/etc/并改名为my.cnf)中。命令如下:
[root@test1 mysql]# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
5、编辑MySQL的配置文件/etc/my.cnf
为保证MySQL能够正常工作,需要指明mysql.sock文件的产生位置。修改socket=/var/lib/mysql/mysql.sock一行中等号右边的值为:/var/www/html/xxxx/data/mysql/mysql.sock 。操作如下:
vi my.cnf (用vi工具编辑my.cnf文件,找到下列数据修改之)# The MySQL server[mysqld] port = 3306#socket = /var/lib/mysql/mysql.sock(原内容,为了更稳妥用“#”注释此行)socket = /var/www/html/xxxx/data/mysql/mysql.sock (加上此行)
PS:我修改的版本稍微有点不一样,貌似有两行 #datadir=/var/lib/mysql #socket=/var/lib/mysql/mysql.sock 我都修改了目录
6、修改MySQL启动脚本/etc/init.d/mysql(这一步我没做,因为我使用的版本貌似直接调用了上面那个文件的路径)
最后,需要修改MySQL启动脚本/etc/init.d/mysql,把其中datadir=/var/lib/mysql一行中,等号右边的路径改成你现在的实际存放路径:/var/www/html/xxxx/data/mysql。(这一步我没做)
[root@test1 etc]# vi /etc/init.d/mysql#datadir=/var/lib/mysql(注释此行)datadir=/var/www/html/xxxx/data/mysql (加上此行)(这一步我没做)
如果是CentOS还要改 /usr/bin/mysqld_safe 相关文件位置;(这一步我没做)
最后 做一个mysql.sock 链接:
ln -s /var/www/html/xxxx/data/mysql/mysql.sock /var/lib/mysql/mysql.sock (原来的错误教程把L打成了i,结果我运行出错,仔细一看原来错在这个地方)
PS,这个文件貌似是自动生成的,最好启动MYSQL服务以后再运行这个命令,然后如果提示“没有那个文件或目录”肯定就是刚才把文件夹移动的时候把/var/lib/mysql这个文件夹删除了 最好自己重新建立一个,以让mysql.sock能复制进去
7、重新启动MySQL服务 /etc/init.d/mysqld start
或用reboot命令重启Linux
如果工作正常移动就成功了,否则对照前面的7步再检查一下。还要注意目录的属主和权限。 复制内容到剪贴板
代码: [root@sample ~]# chown -R mysql:mysql /var/www/html/xxxx/data/mysql/ ← 改变数据库的归属为mysql
[root@sample ~]# chmod 700 /var/www/html/xxxx/data/mysql/test/ ← 改变数据库目录属性为700 (这步貌似在我使用的新版本中也不用的,因为/etc/init.d/mysql里面已经有修改权限的命令了,一启动MYSQL就自动修改)
[root@sample ~]# chmod 660 /var/www/html/xxxx/data/mysql/test/* ← 改变数据库中数据的属性为660 (这步也不用,理由同上)
错误解决方案:
1.在CentOS上,如果mysql是通过yum安装的,那么可能使用上面的方法不能完全凑效。
原因:mysql的配置文件有多处,除了更改/etc/my.cnf文件之外,还需要更改/usr/lib64/mysql/mysql_config
这个文件里面有一行“ldata=’/var/lib/mysql’”和"socket=/var/lib/mysql/mysql.sock",这里也需要改掉
2.另外,还有权限问题,查看/var/log/mysqld.log,发现Can’t create test file /xxx/mysql/centos5.lower-test
这里是因为没有权限创建或读取文件。
解决办法就是使用setenforce 0 这个命令,让系统关闭权限校验,然后再运行命令 service mysqld start 发现OK了。
另外一个办法是restorecon -FRv /var/www/html/xxxx/data/mysql,或者chcon -R -t mysqld_db_t /var/www/html/xxxx/data/mysql
PS:相关的命令,调试的时候方便使用的 /etc/init.d/mysqld start /etc/init.d/mysqld restart service mysqld stop 停止mysql服务,上面的命令提示出错的时候可以用下面这两个 service mysqld start 启动mysql服务
如果访问网站后发现文章列表不见了~不要紧~那是因为有些表正在使用,可以用神器phpmyadmin,进去选中in use的表,然后选下面的 repair table就搞定了
阅读全文
发现移动网站后无法写入
即使设置了文件夹777属性还是不行
错误log里面一大堆的fwrite()和fclose()错误
一看就是权限问题
首先找到/etc/httpd/conf/httpd.conf搜索Group
找到类似
User apache Group apache
知道用户和用户组后,修改网站根目录的用户权限,假如网站根目录是/var/www/html/xxx.com
chown -R apache:apache /var/www/html/xxx.com
阅读全文
删除文件或文件夹
1、删除home目录下的test目录
rm /home/test
2、这种不带参数的删除方法经常会提示无法删除,因为权限不够。
rm -r /home/test
3、-r是递归的删除参数表中的目录及其子目录。 目录将被清空并且删除。 当删除目录包含的具有写保护的文件时用户通常是被提示的。
rm -rf /home/test
-4、f是不提示用户,删除目录下的所有文件。请注意检查路径,输成别的目录就悲剧了。
rm -ir /home/test
5、-i是交互模式。使用这个选项,rm命令在删除任何文件前提示用户确认。
阅读全文
转自http://jingyan.baidu.com/album/b907e627d6a1d646e7891c0b.html Df命令是以磁盘分区为单位查看文件系统,可以加上参数查看磁盘剩余空间信息,命令格式: df -hl
linux Centos系统VPS挂载数据盘教程 一般的linux的云服务器VPS数据盘都是未做分区和格式化 远程SSH登录上Centos服务器:并进行如下操作,注意挂载操作会清空数据,请确认挂载盘无数据或者未使用 列出所有磁盘: 1命令:ll /dev/disk/by-path(注意:ll是字母LL的小写,不是数字11) 一般sda是正在使用的盘,里面还会有分区sda1,sda2 如果有个sdb什么的就是有多一块硬盘
2格式化硬盘 /dev/sdb: 命令:#fdisk /dev/sdb按方框提示操作 分别输入:n p 数字1 回车 回车 w 就可以分区成功了
3创建分区: 命令:mkfs.ext4 /dev/sdb1 可能需要等一段时间
4将数据盘挂载为/www: 命令:#mount /dev/sdb1 /www 我是挂成其他文件夹 mount /dev/sdb1 /var/www/html/98tt
要注意的一点是要确保/var/www/html/98tt 这个文件夹是存在的
5最后一步是写入硬盘启动信息,下次重启后自动挂载数据盘: 命令为:echo "/dev/sdb1 /www ext4 defaults 0 0" >>/etc/fstab 我挂载在其他文件夹,所以修改为 echo "/dev/sdb1 /var/www/html/98tt ext4 defaults 0 0" >>/etc/fstab 然后可以用命令查看一下是否成功 cat /etc/fstab 如果成功,最后一行会显示有
挂载以后可能会出现的问题:把挂载的目录设置为虚拟网站目录,重启APACHE的时候提示这个目录不存在 chcon -R -h -t httpd_sys_content_t /var/www/html/98tt chcon -R -h -t httpd_sys_content_t /var/www/html/98tt/ 然后重启apache就可以了
然后把原来的文件复制过去,如果网站文件很多可能要花费很长时间 cp -r /var/www/html/98tt.com/ /var/www/html/98tt/
阅读全文
du -sh. 系统只显示当前文件夹所占用的总空间 du -a. 显示的是所有的文件.包括子文件夹下所有文件也显示.. 某个文件夹的话例如home:du -sh /var/www/*
阅读全文
然后APACHE的错误日志老是提示MYSQL没有响应什么的
用phpmyadmin登陆不进去
感觉MYSQL不能访问,登录SSH,重启MYSQL发现不能重启
找到日志文件/var/log/mysqld.log打开看了一下
[ERROR] Can’t start server: can’t create PID file: No space left on device
又TM空间满了~又得删除日志了
一看/var/log/下最大的文件竟然有50M
是一个叫btmp的
搜索了一下~这个日志貌似是记录尝试登陆ssh的错误日志
我靠~有人想暴力破解SSH密码啊~
还好我设置了很多符号~
然后我把所有的大文件日志一删除
然后重启MYSQL~
再访问就正常了~
阅读全文
Redhat64位服务器重启后出现该问题,研究了一下午,发现解决办法:
问题说明80端口被占用,用netstat -nlp |grep :80命令看看有什么进程占用了80端口,发现是httpd进程。killall -9 httpd杀掉所有的httpd进程后,用service httpd start命令重启apache服务器,发现现在能够正常重启,不会出现上述问题
检查了一系列东西,最后发现是防火墙的问题,service iptables stop关闭防火墙后,远程测试能够正常访问服务器
PS:一天后发现并没有从根本上解决问题~APACHe还是会自动关掉,启动的时候还是上面的提示
网上找了一个解决办法
3. Third solution is to change binging address in your httpd.conf like this: Listen 127.0.0.1:80 ( that means: instead of Listen 0.0.0.0:80)
然后我修改了/etc/httpd/conf/httpd.conf
把里面的Listen 80修改为
Listen 127.0.0.1:80
然后重启apache,看看明天还出不出这个问题~
PS:貌似还是不太对~网站直接无法访问了,然后我看看配置文件里的例子~貌似要写服务器IP的
于是我直接改成了VPS的IP(这个IP每个服务器都不一样,根据自己的服务器IP修改),类似
Listen 123.123.123.123:80
再测试看看~
PS:apache还是不停地自动关闭,实在没办法~去查了一下错误日志
在/var/log/httpd/里面error_log
看了一下,原来是DEDE程序用了老函数,php5.3以上已经不支持了
[Wed Apr 13 00:16:15 2016] [error] [client 66.249.77.20] PHP Deprecated: Function ereg() is deprecated in /var/www/html/xxx.com/include/arc.listview.class.php on line 681
一堆类似的错误,好吧修改吧
这是因为php5.3中不再支持eregi()函数,而使用preg_match()函数替代。 解决的方法是:将eregi()函数替换成preg_match() 函数。 if(eregi(‘^test’,$file)) 可以替换为 if(preg_match(‘/^test/i’,$file))
————- PHP 5.3.0 之後的 regex, 希望使用 PCRE 的規格, POSIX Regex 都不建議使用了(統一 Regex, 避免規格太多?). 所以下述是不建議使用的 Function (POSIX), 與建議替換成的 Function (PCRE) 列表, 詳可見: PHP: Differences from POSIX regex * POSIX → PCRE * ereg_replace() → preg_replace() * ereg() → preg_match() * eregi_replace() → preg_replace() * eregi() → preg_match() * split() → preg_split() * spliti() → preg_split() * sql_regcase() → No equivalent * 需要 regex 的 split, 可用 preg_split() 代替 * 不需要 regex, 只要要快速分割固定的字串, 可用 explode() 代替. (速度會比需要 regex 的快很多)
阅读全文
转自http://www.2cto.com/Article/201309/241568.html
dede的漏洞公认的多,接手这个网站也接触了不少,现在就把几种接触到的或者了解到的漏洞记录下来,让大家可以提高警惕,防止网站被攻击。
1.dede dialog目录下的配置文件漏洞 如果有能力的同学最好好好研究下这个目录下的文件,漏洞太多了,先只说我遇到的一处 在include/dialog下的config.php第35行
if($cuserLogin->getUserID() <=0 )
{
if(empty($adminDirHand))
{
ShowMsg("<b>提示:需输入后台管理目录才能登录</b><br /><form>请输入后台管理目录名:<input type='hidden' name='gotopage' value='".urlencode($dedeNowurl)."' /><input type='text' name='adminDirHand' value='dede' style='width:120px;' /><input style='width:80px;' type='submit' name='sbt' value='转入登录' /></form>", "javascript:;");
exit();
}
$adminDirHand = HtmlReplace($adminDirHand, 1);
$gurl = "../../{$adminDirHand}/login.php?gotopage=".urlencode($dedeNowurl);
echo "<script language='javascript'>location='$gurl';</script>";
exit();
}
修改方案:$gurl = "../../{$adminDirHand}/login.php?gotopage=".urlencode($dedeNowurl);上面添加如下语句: $adminDirHand = HtmlReplace($adminDirHand, 1);
2.dede group.php页面sql注入漏洞 具体在group/global.inc.php中
$db->SetQuery("SELECT G.groupname,G.groupid,G.des,G.groupimg FROM #@__group_user AS U LEFT JOIN #@__groups AS G ON U.gid=G.groupid WHERE U.uid IN({$_GROUPS[‘_vars’][‘mids’]}) AND U.isjoin=1 AND U.gid<>$id LIMIT 0,6");
$id直接来自用户的输入。应该给$id加过滤 3.dede 5.7版本sql注入漏洞 漏洞位置:/member/ajax_membergroup.php 漏洞原因:没有对membergroup变量进行过滤 4.wap跨站攻击 漏洞文件:wapphp第39行
解决方式:echo htmlspecialchars($pageBody); 5.dede搜索模块sql注入 漏洞文件 : plus/search.php文件存在变量覆盖漏洞,导致$typeid能被二次覆盖,产生sql注入漏洞。 解决方式:官网下载补丁吧. 6.dede 5.6版本任意sql注入漏洞 原因:形成原因:由于dedecmsv5.6的全局机制可以任意给其赋值,而且高级搜索功能/plus/advancedsearch.php中的$sql变量未初始化,导致高级搜索功能可以绕过模板定义直接执行任意SQL语句。 解决方法:对高级搜索功能/plus/advancedsearch.php中的$sql变量初始化 7.dede全局变量漏洞: 漏洞文件:include/common.inc.php 解决方法:
在 /include/common.inc.php 中 找到注册变量的代码
foreach(Array('_GET','_POST','_COOKIE') as $_request)
{
foreach($$_request as $_k => $_v) ${$_k} = _RunMagicQuotes($_v);
}
修改为
foreach(Array('_GET','_POST','_COOKIE') as $_request)
{
foreach($$_request as $_k => $_v) {
if( strlen($_k)>0 && eregi('^(cfg_|GLOBALS)',$_k) ){
exit('Request var not allow!');
}
${$_k} = _RunMagicQuotes($_v);
}
}
8.dede feedback.php页面漏洞 原因:DedeCMS的plus\feedback.php中对变量 $typeid未做过滤,导致SQL注入漏洞。 解决方式:官方有补丁
9.dede变量覆盖漏洞 安装完了删除了install就解决了 10.dede圈子搜索漏洞 漏洞页面:/group/search.php 解决方式:第16行: 1$keyword = htmlspecialchars(addslashes($keyword));
11.dede官方源码漏洞
源码文件:include/shopcar.class.php文件第8行: 解决方式:删除@eval(file_get_contents(‘php://input’));
12.dede新版本变量覆盖漏洞 文件include/common.inc.php 解决方式: CheckRequest($_REQUEST); 在下面添加 CheckRequest($_COOKIE);
13 .dede文件包含漏洞 漏洞文件:Include/payment/alipay.php Include/payment/yeepay.php 解决方式:官方有补丁
14.dede样式分享XSS漏洞 漏洞文件plus/bshare.php 解决方式: plus目录下的bshare.php文件117行 $uuid = isset($uuid)? $uuid : ”;改成 $uuid = isset($uuid)? htmlspecialchars($uuid) : ”;
阅读全文
以前一直不知道,模版头尾更新了以后还得一个一个模版去点一次 提交 更新数据
今天看了下代码,原来是\e\data\tmp下生成了模版缓存,以dt_开头的就是
dt_tempindexpage.php就是首页的缓存
难怪我说怎么更新了头尾,怎么首页等模版不变的~
然后在后台数据更新那里有个 清除临时文件和数据 可以把这些缓存删除~
以后更新了头尾直接点这里就可以了~不用每个模版去点一次 提交
阅读全文
昨天给小孩下了个动画片,发现字幕是单独的
在电脑看的话,播放软件一般可以外挂字幕
但是用电视看的话就没办法外挂了
最好的办法,把字幕给放进mkv文件里去
我下了一个mkvtoolnix绿色版
发现是英文的,即使在选项里选了中文还是没用,大部分文字还是英文
然后我们点红圈那里导入需要加字幕的视频
再按第二次上图红圈那里导入字幕
导入成功,看到了吗?
还需要设置一下语言
以及字幕的格式,这个可以用editplus另存为,就可以看出是什么格式了,或者我们直接把字幕文件转为UTF-8格式,然后这里也选utf-8格式,再按下面红圈的按钮
等一下子,右下绿色进度条变为100%就可以了
阅读全文
第 29 页,共 102 页« 最新«...1020...2728293031...405060...»最旧 »