博主 | 发布时间: 22. December 2010 16:15
忘记MySQL ROOT密码是在MySQL使用中很常见的问题,可是有很多朋友并不会重置ROOT密码,那叫苦啊,我有深有感触,特写此文章与大家交流:
1、编辑MySQL配置文件:
windows环境中:%MySQL_installdir%\my.ini //一般在MySQL安装目录下有my.ini即MySQL的配置文件。
linux环境中:/etc/my.cnf
在[MySQLd]配置段添加如下一行:
skip-grant-tables
保存退出编辑。
2、然后重启MySQL服务
windows环境中:
net stop MySQL
net start MySQL
linux环境中:
/etc/init.d/MySQLd restart
3、设置新的ROOT密码
然后再在命令行下执行:
MySQL -uroot -p
直接回车无需密码即可进入数据库了。
现在我们执行如下语句把root密码更新为 7758521:
update user set password=PASSWORD("7758521") where user='root';
quit 退出MySQL。
4、还原配置文件并重启服务
然后修改MySQL配置文件把刚才添加的那一行删除。
再次重起MySQL服务,密码修改完毕。
修改完毕。
用新密码7758521试一下吧,又能登入MySQL的感觉就是不一样吧?
cd45fd65-ee6d-4d18-91fe-19afacd638a0|0|.0
博主 | 发布时间: 15. December 2010 10:47
举个例子,要从tablename表中随机提取一条记录,大家一般的写法就是:SELECT * FROM tablename ORDER BY RAND() LIMIT 1。
但是,后来我查了一下MYSQL的官方手册,里面针对RAND()的提示大概意思就是,在ORDER BY从句里面不能使用RAND()函数,因为这样会导致数据列被多次扫描。但是在MYSQL 3.23版本中,仍然可以通过ORDER BY RAND()来实现随机。
但是真正测试一下才发现这样效率非常低。一个15万余条的库,查询5条数据,居然要8秒以上。查看官方手册,也说rand()放在ORDER BY 子句中会被执行多次,自然效率及很低。
You cannot use a column with RAND() values in an ORDER BY clause, because ORDER BY would evaluate the column multiple times.
搜索Google,网上基本上都是查询max(id) * rand()来随机获取数据。
SELECT *
FROM `table` AS t1 JOIN (SELECT ROUND(RAND() * (SELECT MAX(id) FROM `table`)) AS id) AS t2
WHERE t1.id >= t2.id
ORDER BY t1.id ASC LIMIT 5;
但是这样会产生连续的5条记录。解决办法只能是每次查询一条,查询5次。即便如此也值得,因为15万条的表,查询只需要0.01秒不到。
下面的语句采用的是JOIN,mysql的论坛上有人使用
SELECT *
FROM `table`
WHERE id >= (SELECT FLOOR( MAX(id) * RAND()) FROM `table` )
ORDER BY id LIMIT 1;
我测试了一下,需要0.5秒,速度也不错,但是跟上面的语句还是有很大差距。总觉有什么地方不正常。
于是我把语句改写了一下。
SELECT * FROM `table`
WHERE id >= (SELECT floor(RAND() * (SELECT MAX(id) FROM `table`)))
ORDER BY id LIMIT 1;
这下,效率又提高了,查询时间只有0.01秒
最后,再把语句完善一下,加上MIN(id)的判断。我在最开始测试的时候,就是因为没有加上MIN(id)的判断,结果有一半的时间总是查询到表中的前面几行。
完整查询语句是:
SELECT * FROM `table`
WHERE id >= (SELECT floor( RAND() * ((SELECT MAX(id) FROM `table`)-(SELECT MIN(id) FROM `table`)) + (SELECT MIN(id) FROM `table`)))
ORDER BY id LIMIT 1;
SELECT *
FROM `table` AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM `table`)-(SELECT MIN(id) FROM `table`))+(SELECT MIN(id) FROM `table`)) AS id) AS t2
WHERE t1.id >= t2.id
ORDER BY t1.id LIMIT 1;
最后在php中对这两个语句进行分别查询10次,
前者花费时间 0.147433 秒
后者花费时间 0.015130 秒
看来采用JOIN的语法比直接在WHERE中使用函数效率还要高很多。
26ea83e0-bd4b-4091-ba8c-dac273b45c9e|0|.0
博主 | 发布时间: 23. August 2010 10:47
默认情况下,MySQL之允许本地登录,需要修改/etc/mysql/my.cnf文件:
注释这一行:
bind-address=127.0.0.1 ==> #bind-address=127.0.0.1
对于需要远程登录的用户执行如下命令:
mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "yourpasswd";
mysql> flush privileges;
开启mysql的远程连接
1、进入mysql,创建一个新用户xuys:
格式:grant 权限 on 数据库名.表名 用户@登录主机 identified by "用户密码";
grant select,update,insert,delete on *.* to xuys@192.168.88.234 identified by "xuys1234";
查看结果,执行:
use mysql;
select host,user,password from user;
可以看到在user表中已有刚才创建的xuys用户。host字段表示登录的主机,其值可以用IP,也可用
主机名,
将host字段的值改为%就表示在任何客户端机器上能以xuys用户登录到mysql服务器,建议在开发时
设为%。
update user set host = '%' where user = 'xuys';
2、 ./mysqladmin -uroot -ppwd reload
./mysqladmin -uroot -ppwd shutdown
3、./mysqld_safe --user=root &
记住:对授权表的任何修改都需要重新reload,即执行第3步。
192.168.88.234 (mysql客户端ip地址)
ec2e47ca-c96d-49c9-bd85-0c4ce572a9cb|0|.0
博主 | 发布时间: 19. August 2010 15:29
在安装mysql数据库时,如果重新安装,很容易遇见apply security setting error,即在配置mysql启动服务时,在启动apply security setting时会出错,原因是卸载mysql时并没有完全删除文件,所以有必要手动清除这些,要清除的文件主要:
一、mysql的安装目录,一般为C:\Program Files目录下。
二、mysql的数据存放目录,一般在C:\Documents and Settings\All Users\Application Data目录下(需要注意的时Application Data这个文件夹默认是隐藏的,要通过 工具->文件夹选项->查看->显示所有文件与文件夹 来设置隐藏文件可见)。
三、删除注册表数据,通过regedit,删除以下几个文件:
引用
HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Services/Eventlog/Applications/MySQL
HKEY_LOCAL_MACHINE/SYSTEM/ControlSet002/Services/Eventlog/Applications/MySQL
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Eventlog/Applications/MySQL
经过上面几个步骤以后,再装就不应该出现这个问题了。
b7e343e7-4a54-4865-9190-e7a1158b4c6b|0|.0
博主 | 发布时间: 10. August 2010 11:59
dedecms的数据库操作类,非常实用,在二次开发中尤其重要,这个数据库操作类说明算是奉献给大家的小礼物了。
<?php
/*
DedeCms 数据库使用实例说明
*/
require_once dirname(__FILE__)."pub_db_mysql.php";//引用数据库文件
//确保数据库信息填写正确
//数据库连接信息
$cfg_dbhost = 'localhost';
$cfg_dbname = 'sccms';
$cfg_dbuser = 'root';
$cfg_dbpwd = '123456';
$cfg_dbprefix = 'sc_';
$cfg_db_language = 'utf8';
//新建一个数据库操作类
$dsql = new ScSql(false);
////////////////////////////////获取一条记录的内容///////////////////////////////
//下面是获取一条记录使用实例
$row = $dsql->GetOne("Select * From #@__* where id = $aid");
//获取数据内容保存在数组$row中,通过下标可以将其调用出来
echo $row['id'];
//下面是循环调用记录
///////////////////////////////////////////////////////////////////////////////
//////////////////////////////将查询获取总数输出/////////////////////////////
//获取一个查询记录总数
$row = $dsql->GetOne("select count(*) as dd where typeid = $typeid");
echo $row['dd'];//输出总数
///////////////////////////////////////////////////////////////////////////////
//////////////////////////////将查询的若干条记录输出//////////////////////////////////
$sql = "Select * from #@__*";
$dsql->SetQuery($sql);//将SQL查询语句格式化
$dsql->Execute();//执行SQL操作
//通过循环输出执行查询中的结果
while($row = $dsql->GetArray()){
echo $row['id'];
echo $row['title'];
}
//或者采取这种方式输出内容
while($row = $dsql->GetObject()){
echo $row->id;
echo $row->Title;
}
///////////////////////////////////////////////////////////////////////////////
//////////////////////////////插入一条记录///////////////////////////////
$sql = "
INSERT INTO `#@__member_flink`(mid,title,url,linktype,imgurl,imgwidth,imgheight)
VALUES(".$cfg_ml->M_ID.",'$title','$url','$linktype','$imgurl','$imgwidth','$imgheight');";//插入记录数据库
$dsql->SetQuery($sql);//格式化查询语句
$dsql->ExecNoneQuery();//执行SQL操作
///////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////删除一条记录///////////////////////////
$sql = "Delete From #@__member_flink where aid='$aid' And mid='".$cfg_ml->M_ID."';";
$dsql->SetQuery($sql);
$dsql->ExecNoneQuery();
//或者使用简化模式
$dsql->ExecNoneQuery("Delete From #@__member_flink where aid='$aid' And mid='".$cfg_ml->M_ID."';");
///////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////更新一条记录//////////////////////////
$upquery = "
Update #@__member_flink set
title='$title',url='$url',linktype='$linktype',
imgurl='$imgurl',imgwidth='$imgwidth',imgheight='$imgheight'
where aid='$aid' And mid='".$cfg_ml->M_ID."';
";
$rs = $dsql->ExecuteNoneQuery($upquery);
///////////////////////////////////////////////////////////////////////////////
////////////////////////////////判断获取数据库内容的常用方法///////////////////
$row = $dsql->GetOne("Select * From #@__moneycard_type where tid={$pid}");
if(!is_array($row)){
echo "失败";
exit();
}
/////////////////////////////
$upquery = " Update #@__member_flink set
title='$title',url='$url',linktype='$linktype',
imgurl='$imgurl',imgwidth='$imgwidth',imgheight='$imgheight'
where aid='$aid' And mid='".$cfg_ml->M_ID."';
";
$rs = $dsql->ExecuteNoneQuery($upquery);
if($rs){
echo "成功";
}else{
echo "失败";
}
//////////////////////////////////获取总数//////////////////////////////////
$dsql = new DedeSql(false);
$dsql->SetQuery("Select * from `#@__admin` where userid='$userid' Or uname='$uname'");
$dsql->Execute();
$ns = $dsql->GetTotalRow();
////////////////////////////////关闭数据库///////////////////////////////////
$dsql->Close();
///////////////////////////////////////////////////////////////////////////////
?>
2aaf863c-7407-40ad-aa70-e2a602754e82|0|.0