方言
青春的痕迹似乎正在以一种神秘的方式重回到我的生活中
posts - 5,  comments - 18,  trackbacks - 4

最近帮朋友升级一个php的项目,mysql数据库的版本是5.0.4.1,但是在添加一个账户后却发现用这个账户无法登录mysql。以前也用过mysql数据库(那时还是mysql3),可这样的问题还是头一次遇到。我想在开发过程中遇到这类问题的人一定不在少数,那么我们就从这次出现的问题出发来一起研究一下mysql数据库的账户添加问题。

先通过控制台添加一个账户:


mysql> INSERT INTO user

-> VALUES('%','monty',PASSWORD('some_pass'),

-> 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y',

-> 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y',

-> '','','','',0,0,0,0);


然后,建立php程序进行登录

 

<html><body><h1>It works!</h1>
<?php
$link = mysql_connect('localhost', 'monty', 'some_pass');
if (!$link) {
    
die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_close($link);
?>

</body></html>

但是,运行后的结果却是:

 登录错误

 原来,在mysql的这个版本中(已经很久没有用mysql了,之前的版本没有经过测试),如果使用insert命令来增加一个账号的话,必须在添加后刷新一下特权表:

mysql> INSERT INTO user
    
->     VALUES('%','monty',PASSWORD('some_pass'),
    
->     'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y',
    
->     'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y',
    
->     '','','','',0,0,0,0);
mysql
> FLUSH PRIVILEGES;

 再运行刚才的php程序,正确的结果就出现了:

运行成功 

我想,很多同志在刚刚接触mysql的时候很有可能会遇到相同的问题。

那么,我们来看看mysql的文档是如何来解释这个问题的。

首先,mysql可以通过GRANT命令进行帐户添加:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost'
    
->     IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
mysql
> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'
    
->     IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
mysql
> GRANT RELOAD,PROCESS ON *.* TO 'admin'@'localhost';
mysql
> GRANT USAGE ON *.* TO 'dummy'@'localhost';
  •  前两个帐户名称都是monty,而且都是拥有所有权限和密码。但是两者的区别在于,第一个帐户(monty@localhost)只能通过本地登录,而第二个账户(monty@%)可以通过任意主机登录。值得注意的是,为了能够使用monty帐户在任何地方进行登录,这两个账户同时存在则是必要的。因为,如果没有本地帐户(monty@localhost),使用monty帐户登录时,mysql_install_db将优先考虑创建一个本地的匿名帐户。那么结果将是monty账户会被当作一个匿名帐户来处理。原因则在于,匿名帐户拥有一个比nonty@%账户更加具体的host字段值,从而在user表排序的时候会相对出现的更早。
  •  上面这个表中的admin帐号则只拥有reload和process权限且没有密码,这些权限允许该帐户执行mysqladmin reload, mysqladmin refresh,mysqladmin processlist和mysqladmin flush-xxx 系列命令,但是没有权限进入任何数据库。
  • dummy帐号没有密码也没有任何权限,它只被允许从本地(localhost)登录mysql。GRANT命令允许使用USAGE来创建一个帐号却不赋予任何权限。
  • 如果你的Mysql采用的是NO_AUTO_CREATE_USER模式,那么通过命令行模式建立一个没有密码的帐号将会失败。为了解决这个问题,你可以使用IDENTIFIED BY来指定具体的密码。
以上就是mysql用来进行帐户添加的两种主要方式,如果你在开发的过程中也遇到类似的问题,相信你用这两种方法就可以解决了。


posted @ 2008-07-23 06:52 TQ 阅读(742) | 评论 (4)编辑
几年前在做一个项目的时候需要处理这样一种情况:
主窗体是隐藏的,程序中有一个线程在时时监控网络中传输的数据
一旦发现传输的数据出现新的类型就需要在主窗体的treeview控件中添加一个节点来记录这种类型数据。
由于当时比较菜鸟,就直接调用了窗体引用:mainfrm.dtviewer.Nodes.Add(dttype);
结果,编译正常,执行的时候却报了一个错误:不能操作不同线程中的控件(大概是这个意思,时间久了,忘记了)。
即便在这个窗体中的函数来调用这个操作也不能解决问题,还是报相同的错误。
相信有过开发经历的同志们一定都有过这样的经历:当你遇到一个从未出现过的问题时,往往通过中文msdn,或者在网上查找相关资料,可到最后却一无所获。最终还得上国外的技术网站来解决问题。
最后,我们终于在国外的一家网站上找到了类似的解决方法——使用delegate。
那就是在窗体类中实例化一个delegate,并且指向处理treeview的那个函数。当需要调用这个函数的时候直接运行dtviewer.Invoke(mydelegate,NULL);即可。
具体代码如下:
 1 //有新的数据类型出现,获取配置信息
 2 public void ShowNewType(ClassType NewType)
 3 {
 4     myMethodDelegate tmpdel = new myMethodDelegate(ShowTheType);
 5     this.NowNewType = NewType
 6     this.trvDDI.Invoke(tmpdel, null);
 7     device = null;
 8     tmpdel = null;
 9 }

10
11 //仅被ShowTheType调用,用于在树形控件的线程上调用:
12 private void ShowTheType()
13 {
14     try {
15         ClassType tmpType= NowNewType;
16         devicenode = this.dtviewer.Nodes.Add(tmpType.FullName);
17         devicenode.Tag = tmpType
18         //将类型实例作为tag值
19     }

20     catch (Exception ex) {
21         Debug.WriteLine("ShowTheType:" + Err.Description);
22     }

23 }

posted @ 2008-07-18 15:03 TQ 阅读(86) | 评论 (0)编辑
     摘要: 在上一篇文章中主要介绍了socket异步通信实现的服务器端代码,下面我们来分析一下客户端代码:那么在设计客户端代码时我们主要考虑哪些问题呢?第一是如何接收数据,往往一次传输的数据量较大,但socket一次的传输量是1024个byte,因此需要对数据在发送端进行拆分,而在接收端进行组合。第二是需要建立缓冲区,网络传输的速度肯定比我们处理数据的速度快。大家如果需要使用这段代码,需要编写一下其中的Cla... 阅读全文
posted @ 2008-07-10 17:09 TQ 阅读(1778) | 评论 (8)编辑
     摘要: 这是很久以前做的一个项目中的一部分代码,和项目业务逻辑相关的部分代码已经删去了,留下的这些仅仅和异步通信有关。提前声明,这些源代码当时是根据网上的一段socket通信代码修改后的版本。俗话说,copy+修改=创新!当时,项目的需求是这样的:1.需要能够实现多个工作站互相进行异步数据传输2.能够根据不同工作站的配置情况选择从哪个工作站申请数据3.能够及时收获各工作站的配置变更和在线情况4.收到的数据... 阅读全文
posted @ 2008-07-10 16:36 TQ 阅读(1767) | 评论 (6)编辑
搞.net开发已经有4年的时间了,基本上都是在搞桌面应用程序开发。
虽然项目做了不少,但都是一种风格,总觉得在技术的提高上遇到了瓶颈。
不知道大家是否也和我有同样的感受。
至今这些项目还是停留在.net framework1.1的基础上,真感觉自己有点stone age.
在园子里转悠了几天,感觉以前自己真的是太闭塞了
希望以后能够和大家一起交流吧!
posted @ 2008-07-03 15:40 TQ 阅读(65) | 评论 (0)编辑

<2008年10月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

与我联系

搜索

 

常用链接

留言簿

我的标签

随笔分类

随笔档案

相册

最新评论

阅读排行榜

评论排行榜