月度归档:2011年07月

【转载】MySQL 常用用户管理命令


1、添加用户

本机访问权限:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost'
-> IDENTIFIED BY 'password' WITH GRANT OPTION;
远程访问权限:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'username'@'%'
-> IDENTIFIED BY 'password' WITH GRANT OPTION;
另外还有一种方法是直接Insert INTO user,注意这种方法之后需要 FLUSH PRIVILEGES 让服务器重读授权表。

insert into user(host,user,password,ssl_cipher,x509_issuer,x509_subject)
values(‘localhost’,'xff’,password(‘xff’),”,”,”);
FLUSH PRIVILEGES;
note:1)必须要加上ssl_cipher,x509_issuer,x509_subject三列,以为其默认值不为空(数据库版本为:5.0.51b)
2)FLUSH PRIVILEGES重载授权表,使权限更改生效
3)mysql是通过User表,Db表,Host表,Tables_priv 表,Columns_priv 表这5张表实现用户权限控制,均可以通过直接对这些表的操作以达到对用户的管理

2、删除用户

drop user admin@localhost;(@不加默认为“%”)

3、权限回收
revoke delete on test.* from admin@'localhost';

4、创建用户授权一起实现
grant select,insert,update,delete on *.* to 'admin2′@'%'
identified by ‘admin2′ with grant option;
note:在mysql中,如果@后面的登录范围不同,帐号可以一样

5、限制用户资源

mysql> GRANT ALL ON customer.* TO 'francis'@'localhost'
-> IDENTIFIED BY 'frank'
-> WITH MAX_QUERIES_PER_HOUR 20
-> MAX_UPDATES_PER_HOUR 10
-> MAX_CONNECTIONS_PER_HOUR 5
-> MAX_USER_CONNECTIONS 2;

6、用户密码设置

使用mysqladmin:
shell> mysqladmin -u user_name -h host_name password "newpwd"
或在mysql里执行语句:
mysql> SET PASSWORD FOR 'username'@'%'
= PASSWORD('password');
如果只是更改自己的密码,则:
mysql> SET PASSWORD = PASSWORD(‘password’);
在全局级别使用GRANT USAGE语句(在*.*)来指定某个账户的密码:
mysql> GRANT USAGE ON *.* TO 'username'@'%'
IDENTIFIED BY 'password';
或直接修改MySQL库表:
mysql> UPDATE user SET Password = PASSWORD('bagel')
-> WHERE Host = '%' AND User = 'francis';
mysql> FLUSH PRIVILEGES;

修改root密码:
update mysql.user set password=password(‘passw0rd’) where user=’root’;
FLUSH PRIVILEGES;

7、关于加密
mysql> select PASSWORD('password');
+-------------------------------------------+
| PASSWORD('password') |
+-------------------------------------------+
| *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
+-------------------------------------------+
1 row in set (0.00 sec)

mysql> select MD5('hello');
+----------------------------------+
| MD5('hello') |
+----------------------------------+
| 5d41402abc4b2a76b9719d911017c592 |
+----------------------------------+
1 row in set (0.00 sec)

mysql> select SHA1('abc');

-> 'a9993e364706816aba3e25717850c26c9cd0d89d'

SHA1()是为字符串算出一个 SHA1 160比特检查和,如RFC 3174 (安全散列算法)中所述。

8、授权精确到列
grant select (cur_url,pre_url) on test.abc to admin@localhost;

原文:http://www.ha97.com/4109.html

PHP 5.4.0 alpha1版本发布

以前可能很少关注版本之间的变化,认为只要写好程序就OK了。但是作为一个PHP的忠实粉丝,如果不关心它的成长变化,实在有些说不过去。

http://www.php.net/releases/NEWS_5_4_0_alpha1.txt

上面的链接说明PHP 5.4.0 alpha1的一些变化,我从中发现几个我比较感兴趣的变化,整理如下:

1)Removed: session_is_registered(), session_register() and session_unregister()
functions. (Kalle)

2)<?= is now always available regardless of the short_tags setting (Rasmus)

3)Changed default value of “default_charset” php.ini option from ISO-8859-1 to
UTF-8. (Rasmus)

4)Moved extensions to PECL: (Johannes)
. ext/sqlite.

5)Added array dereferencing support.

substr_count函数

PHP提供了很多很好用的内置函数,用好这些函数可以提高自己的效率,所以没事应该多看看php手册。

int substr_count ( string haystack, string needle)

函数可以统计haystack字符串中needle字符串的出现频率。

PS:

haystack 草垛

needle 针

在草垛中找针

Vim 学习

最近正在试着使用Vim来做文本编辑器,发现这个东西确实比较适合用来变成,不想其他的IDE一样庞大儿臃肿。今天发现IBM开发者网站上有三篇介绍使用Vim的文章,在此先记录下来,等有时间慢慢学习,现在偶要去做其他事情。

Vim学习

Vim 实用技术,第 1 部分: 实用技巧

本系列文章分三部分详细阐述了 Vim 的使用技巧、插件、定制。第一部分主要是深入分析了 Vim 的使用。

Vim 实用技术,第 2 部分: 常用插件

第一部分介绍了一些基本的 Vim 使用技巧。掌握这些技巧可以很大地提高编辑效率,但是 Vim 的强大功能并不仅限于此。Vim 还可以通过“插件”来进行功能扩展。精确地说,是通过脚本来进行扩展,脚本类型有插件、语法加亮、配色方案、文件类型检测等多种。大部分的脚本都是由 Vim 的用户写的,解决了用户身边的问题,使 Vim 变得更加有用。本章将介绍最常用的一些脚本,其中除了一个属于“语法加亮”脚本外,其它都属于“插件”类型。关于如何写脚本的一些基础知识将在下一部分进行一些介绍。

Vim 实用技术,第 3 部分: 定制 Vim

前面两部分讲的都是如何使用现有的 Vim 系统,本部分则会通过实例来讲如何定制 Vim 的行为。良好的定制可以让使用 Vim 变得更为得心应手;同时,在掌握了基本的定制之后,也许你就会想进一步写一些自己的 Vim 脚本,从而真正地成为一个 Vim 专家。

https://www.ibm.com/developerworks/cn/views/linux/libraryview.jsp?type_by=%E6%8A%80%E6%9C%AF%E6%96%87%E7%AB%A0&view_by=search&search_by=Vim+%E5%AE%9E%E7%94%A8%E6%8A%80%E6%9C%AF

【转载】call,apply,arguments,callee,caller介绍


//1.call 作用于的对象this是第一个参数,后面的不定长参数是作为参数传递过去的。

//2.apply 作用于的对象this是第一个参数, 第二个参数是一个数组,表示传递的所有参数

//3.arguments 表示函数调用过程中到结束之前,传递给函数的所有参数的集合, 类似于数组,但是不是数组,

//使用数组的下标方法进行访问

//arguments[0]表示第一个参数

//arguments[1]表示第二个参数

//arguments[2]表示第三个参数

//4. arguments.callee 表示当前正在执行的函数,在无名函数的递归调用时能够派上用场。

//5.arguments.callee.caller 表示当前正在执行的函数是由什么函数调用的,返回调用当前执行函数的函数的引用

//6.arguments.caller 表示调用当前函数的函数的arguments对象。



这个ie上有,ff上没有,太傻比了

原文:http://shuaigg-babysky.iteye.com/blog/737184