一、MySQL权限简介
关于mysql的权限简单的理解就是mysql允许你做你全力以内的事情,不可以越界。比如只允许你执行select操作,那么你就不能执行update操作。只允许你从某台机器上连接mysql,那么你就不能从除那台机器以外的其他机器连接mysql。
那么Mysql的权限是如何实现的呢?这就要说到mysql的两阶段验证,下面详细介绍:第一阶段:服务器首先会检查你是否允许连接。因为创建用户的时候会加上主机限制,可以限制成本地、某个IP、某个IP段、以及任何地方等,只允许你从配置的指定地方登陆。第二阶段:如果你能连接,Mysql会检查你发出的每个请求,看你是否有足够的权限实施它。比如你要更新某个表、或者查询某个表,Mysql会查看你对哪个表或者某个列是否有权限。再比如,你要运行某个存储过程,Mysql会检查你对存储过程是否有执行权限等。
MYSQL到底都有哪些权限呢?从官网复制一个表来看看:
权限 | 权限级别 | 权限说明 |
CREATE | 数据库、表或索引 | 创建数据库、表或索引权限 |
DROP | 数据库或表 | 删除数据库或表权限 |
GRANT OPTION | 数据库、表或保存的程序 | 赋予权限选项 |
REFERENCES | 数据库或表 | |
ALTER | 表 | 更改表,比如添加字段、索引等 |
DELETE | 表 | 删除数据权限 |
INDEX | 表 | 索引权限 |
INSERT | 表 | 插入权限 |
SELECT | 表 | 查询权限 |
UPDATE | 表 | 更新权限 |
CREATE VIEW | 视图 | 创建视图权限 |
SHOW VIEW | 视图 | 查看视图权限 |
ALTER ROUTINE | 存储过程 | 更改存储过程权限 |
CREATE ROUTINE | 存储过程 | 创建存储过程权限 |
EXECUTE | 存储过程 | 执行存储过程权限 |
FILE | 服务器主机上的文件访问 | 文件访问权限 |
CREATE TEMPORARY TABLES | 服务器管理 | 创建临时表权限 |
LOCK TABLES | 服务器管理 | 锁表权限 |
CREATE USER | 服务器管理 | 创建用户权限 |
PROCESS | 服务器管理 | 查看进程权限 |
RELOAD | 服务器管理 | 执行flush-hosts, flush-logs, flush-privileges, flush-status, flush-tables, flush-threads, refresh, reload等命令的权限 |
REPLICATION CLIENT | 服务器管理 | 复制权限 |
REPLICATION SLAVE | 服务器管理 | 复制权限 |
SHOW DATABASES | 服务器管理 | 查看数据库权限 |
SHUTDOWN | 服务器管理 | 关闭数据库权限 |
SUPER | 服务器管理 | 执行kill线程权限 |
MYSQL的权限如何分布,就是针对表可以设置什么权限,针对列可以设置什么权限等等,这个可以从官方文档中的一个表来说明:
权限分布 | 可能的设置的权限 |
表权限 | 'Select', 'Insert', 'Update', 'Delete', 'Create', 'Drop', 'Grant', 'References', 'Index', 'Alter' |
列权限 | 'Select', 'Insert', 'Update', 'References' |
过程权限 | 'Execute', 'Alter Routine', 'Grant' |
二、MySQL权限经验原则:
权限控制主要是出于安全因素,因此需要遵循一下几个经验原则:
1、只授予能满足需要的最小权限,防止用户干坏事。比如用户只是需要查询,那就只给select权限就可以了,不要给用户赋予update、insert或者delete权限。
2、创建用户的时候限制用户的登录主机,一般是限制成指定IP或者内网IP段。
3、初始化数据库的时候删除没有密码的用户。安装完数据库的时候会自动创建一些用户,这些用户默认没有密码。
4、为每个用户设置满足密码复杂度的密码。
5、定期清理不需要的用户。回收权限或者删除用户。
三、MySQL权限实战:
1、GRANT命令使用说明:
先来看一个例子,创建一个只允许从本地登录的超级用户jack,并允许将权限赋予别的用户,密码为:jack.
mysql> grant all privileges on *.* to jack@'localhost' identified by "jack" with grant option;
Query OK, 0 rows affected (0.01 sec)
GRANT命令说明:
ALL PRIVILEGES 是表示所有权限,你也可以使用select、update等权限。
ON 用来指定权限针对哪些库和表。
*.* 中前面的*号用来指定数据库名,后面的*号用来指定表名。
TO 表示将权限赋予某个用户。
jack@'localhost' 表示jack用户,@后面接限制的主机,可以是IP、IP段、域名以及%,%表示任何地方。注意:这里%有的版本不包括本地,以前碰到过给某个用户设置了%允许任何地方登录,但是在本地登录不了,这个和版本有关系,遇到这个问题再加一个localhost的用户就可以了。
IDENTIFIED BY 指定用户的登录密码。
WITH GRANT OPTION 这个选项表示该用户可以将自己拥有的权限授权给别人。注意:经常有人在创建操作用户的时候不指定WITH GRANT OPTION选项导致后来该用户不能使用GRANT命令创建用户或者给其它用户授权。
备注:可以使用GRANT重复给用户添加权限,权限叠加,比如你先给用户添加一个select权限,然后又给用户添加一个insert权限,那么该用户就同时拥有了select和insert权限。
2、刷新权限
使用这个命令使权限生效,尤其是你对那些权限表user、db、host等做了update或者delete更新的时候。以前遇到过使用grant后权限没有更新的情况,只要对权限做了更改就使用FLUSH PRIVILEGES命令来刷新权限。
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
3、查看权限
查看当前用户的权限:
mysql> show grants;
+---------------------------------------------------------------------+
Grants for root@localhost
+---------------------------------------------------------------------+
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION
GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION
+---------------------------------------------------------------------+
2 rows in set (0.00 sec)
查看某个用户的权限:
mysql> show grants for 'jack'@'%'+-----------------------------------------------------------------------------------------------------+
Grants for jack@%
+-----------------------------------------------------------------------------------------------------+
GRANT USAGE ON *.* TO 'jack'@'%' IDENTIFIED BY PASSWORD '*9BCDC990E611B8D852EFAF1E3919AB6AC8C8A9F0'
+-----------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
4、回收权限
mysql> revoke delete on *.* from 'jack'@'localhost';
Query OK, 0 rows affected (0.01 sec)
5、删除用户
mysql> select host,user,password from user+-----------+------+-------------------------------------------+
host user password
+-----------+------+-------------------------------------------+
localhost root
rhel5.4 root
127.0.0.1 root
::1 root
localhost
rhel5.4
localhost jack *9BCDC990E611B8D852EFAF1E3919AB6AC8C8A9F0
+-----------+------+-------------------------------------------+
7 rows in set (0.00 sec)
mysql> drop user 'jack'@'localhost';
Query OK, 0 rows affected (0.01 sec)
6、对账户重命名
mysql> rename user 'jack'@'%' to 'jim'@'%';
Query OK, 0 rows affected (0.00 sec)
7、修改密码
.htaccess基本设置
.htaccess 文件 (Hypertext Access file) 是Apache Web服务器的一个非常强大的配置文件,对于这个文件,Apache有一堆参数可以让你配置出几乎随心所欲的功能。.htaccess 配置文件坚持了Unix的一个文化——使用一个ASCII 的纯文本文件来配置你的网站的访问策略。
这篇文章包括了16个非常有用的小技巧。另外,因为.htaccess 是一个相当强大的配置文件,所以,一个轻微的语法错误会造成你整个网站的故障,所以,在你修改或是替换原有的文件时,一定要备份旧的文件,以便出现问题的时候可以方便的恢复。
1. 使用.htaccess 创建自定义的出错页面。对于Linux Apache来说这是一项极其简单的事情。使用下面的.htaccess语法你可以轻松的完成这一功能。(把.htaccess放在你的网站根目录下)
ErrorDocument 401 /error/401.php
ErrorDocument 403 /error/403.php
ErrorDocument 404 /error/404.php
ErrorDocument 500 /error/500.php
2. 设置网站的时区
SetEnv TZ America/Houston
3. 阻止IP列表
有些时候,你需要以IP地址的方式阻止一些访问。无论是对于一个IP地址还是一个网段,这都是一件非常简单的事情,如下所示:
allow from all
deny from 145.186.14.122
deny from 124.15
Apache对于被拒绝的IP会返回403错误。
4. 把一些老的链接转到新的链接上——搜索引擎优化SEO
5. 为服务器管理员设置电子邮件。
ServerSignature EMail
SetEnv SERVER_ADMIN default@domain.com
6. 使用.htaccess 访止盗链。如果你网站上的一个图片被别的N多的网站引用了,那么,这很有可能会导致你服务器的性能下降,使用下面的代码可以保护某些热门的链接不被过多的引用。
7. 阻止 User Agent 的所有请求
## .htaccess Code :: BEGIN
## Block Bad Bots by user-Agent
SetEnvIfNoCase user-Agent ^FrontPage [NC,OR]
SetEnvIfNoCase user-Agent ^Java.* [NC,OR]
SetEnvIfNoCase user-Agent ^Microsoft.URL [NC,OR]
SetEnvIfNoCase user-Agent ^MSFrontPage [NC,OR]
SetEnvIfNoCase user-Agent ^Offline.Explorer [NC,OR]
SetEnvIfNoCase user-Agent ^[Ww]eb[Bb]andit [NC,OR]
SetEnvIfNoCase user-Agent ^Zeus [NC]
Order Allow,Deny
Allow from all
Deny from env=bad_bot
## .htaccess Code :: END
8. 把某些特殊的IP地址的请求重定向到别的站点
ErrorDocument 403 http://www.kuqin.com
Order deny,allow
Deny from all
Allow from 124.34.48.165
Allow from 102.54.68.123
9. 直接找开文件而不是下载 – 通常,我们打开网上文件的时候总是会出现一个对话框问我们是下载还是直接打开,使用下面的设置就不会出现这个问题了,直接打开。
AddType application/octet-stream .pdf
AddType application/octet-stream .zip
AddType application/octet-stream .mov
10. 修改文件类型 – 下面的示例可以让任何的文件都成为PHP那么被服务器解释。比如:myphp, cgi,phtml等。
ForceType application/x-httpd-php
SetHandler application/x-httpd-php
11. 阻止存取.htaccess 文件
# secure htaccess file
order allow,deny
deny from all
12. 保护服务器上的文件被存取
# prevent access of a certain file order allow,deny
deny from all
13. 阻止目录浏览
# disable directory browsing
Options All -Indexes
14. 设置默认主页
# serve alternate default index page
DirectoryIndex about.html
15. 口令认证 – 你可以创建一个文件用于认证。下面是一个示例:
# to protect a file
AuthType Basic
AuthName “Prompt”
AuthUserFile /home/path/.htpasswd
Require valid-user
# password-protect a directory
resides
AuthType basic
AuthName “This directory is protected”
AuthUserFile /home/path/.htpasswd
AuthGroupFile /dev/null
Require valid-user
16. 把老的域名转像新的域名
# redirect from old domain to new domain
RewriteEngine On
RewriteRule ^(.*)$
http://www.abc.com/$1 [R=301,L]
在IIS6 配置使用php5.4的fastcgi模式
在IIS6 配置使用php的fastcgi模式
1.下载FastCGI For IIS6
fastcgi页面:http://www.iis.net/download/fastcgi
CGI配置教程 http://learn.iis.net/page.aspx/247/using-fastcgi-to-host-php-applications-on-iis-60/
2、下载 php5.4
php on windows页面:http://www.microsoft.com/web/platform/phponwindows.aspx
php 5.4 下载地址:http://windows.php.net/downloads/releases/php-5.4.0-nts-Win32-VC9-x86.zip
解压到C:\php目录下
设置IIS启动帐号对 C:\php\ 有读取执行权限
3、注册PHP到FastCGI(原理是在fastcgi的ini中,增加一个扩展。)
cscript fcgiconfig.js -add -section:"php" -extension:php -path:"C:\php\php-cgi.exe"
fcgiconfig.js 在 C:\WINDOWS\system32\inetsrv 目录下。
4、做一些性能和安全设置
C:\php\php.ini-recommended重命名为为C:\php\php.ini
打开C:\php\php.ini,修改:
extension_dir = "C:\php\ext"
fastcgi.impersonate = 1
cgi.fix_pathinfo=1
cgi.force_redirect = 0
php.ini 其他的地方设置跟平时配置isapi 模式一样;
执行:
cscript fcgiconfig.js -set -section:"PHP" -InstanceMaxRequests:10000
cscript fcgiconfig.js -set -section:"PHP" -EnvironmentVars:PHP_FCGI_MAX_REQUESTS:10000
以上两项设置最大池和响应连接数,可以根据自己的硬件配置、使用情况修改
如果上面的命令无效,可以打开才C:\windows\system32\inetsrv\fcgiext.ini 内容如下:
[Types]
php=php
[php]
ExePath=C:\php\php-cgi.exe
InstanceMaxRequests=10000
EnvironmentVars=PHP_FCGI_MAX_REQUESTS:10000
然后重启IIS。
5、设置php.ini
date.timezone =Asia/Shanghai
short_open_tag = ON
display_errors = ON
variables_order = "EGPCS"
default_charset = "utf-8"
打开mysql的支持(去掉前缀的分号):
extension=php_mysql.dll
extension_dir = "ext"
放一个测试文件运行看看:
< ?php phpinfo(); ?>
6、注意:
IIS6中已经创建的站点,不会自动添加.php映射。新建的站点,则会自动添加.php的映射。
如果提示14001错误,是因为VC9运行库没有安装的缘故。
FastCGI Error
The FastCGI Handler was unable to process the request.
--------------------------------------------------------------------------------
Error Details:
Error Number: 14001 (0x800736b1).
Error Description: 由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题。
HTTP Error 500 - Server Error.
Internet Information Services (IIS)
Microsoft Visual C++ 2008 Redistributable Package (x86)下载地址:
http://www.microsoft.com/downloads/details.aspx?FamilyID=9B2DA534-3E03-4391-8A4D-074B9F2BC1BF&displaylang=zh-cn
下载后安装即可。
7、不支持请求。 如果提示“不支持请求”,那就创建一个.php的映射。
.php 勾选脚本引擎(默认),指向 C:\WINDOWS\system32\inetsrv\fcgiext.dll 。即可。
原文:
http://blog.csdn.net/yeqiufeng/article/details/7425071
PHP版本讲解
PHP版本目前主要有分三支:PHP4/PHP5/PHP6
PHP4由于太古老、对OO支持不力已基本被淘汰,不用考虑PHP4。
PHP6由于基本没有生产线上的应用,还基本只是一款概念产品,很多功能已在PHP5.3上实现,所以暂不考虑PHP6。
PHP5的版本目前主要分三支:PHP5.2之前的版本、PHP5.2.x 和 PHP5.3.x
PHP5.2之前的版本不值得考虑,因为某些功能缺陷或者BUG。
主流PHP程序对PHP5.2.x的兼容性最好,而每次版本号的升级带来的都是安全性和稳定性的改善,所以宜挑选最新的版本。目前PHP5.2系列最新的是PHP5.2.17。
而如果产品是自己开发自己使用,PHP5.3在某些方面更具优势,在稳定性上更胜一筹,增加了很多PHP5.2所不具有的功能,比如内置php-fpm、更完善的垃圾回收算法、命名空间的引入、sqlite3的支持等等,是部署项目值得考虑的版本。目前PHP5.3系列最新的是PHP5.3.8。
面向windows的php有以下几个版本
windows版本下载地址:http://windows.php.net/download/
Installer:可执行的MSI格式安装包。
Zip:解压即可用。和install版无区别。建议选择Zip版。
Debug Pack:带调试的php包。
VC6与VC9是什么?
VC6就是legacy Visual Studio 6 compiler,就是使用这个编译器编译的。
VC9 就是 the Visual Studio 2008 compiler,就是用微软的VS编辑器编译的。
那我们如何选择下载哪个版本的PHP呢?
如果你是在windows下使用Apache+PHP的,请选择VC6版本。
如果你是在windows下使用IIS+PHP 的,请选择VC9版本。
提示:使用VC9版的时候需要有VC++2008的运行时环境(x86)。(x64)
提示:不要在apache下使用VC9的版本。
提示:php5.2官方只提供vc6的下载。
提示:php5.3官方提供了vc6和vc9的下载,但从php5.3.5之后只提供vc9版的下载。php5.3.5是最后一个带vc6版的。
TS和NTS是什么?
TS 指 Thread Safe,即线程安全,一般在IIS以ISAPI方式加载的时候选择这个版本。
NTS 指 Non Thread Safe,即非线程安全,一般在IIS以FastCGI方式运行的时候选择这个版本,具有更好的性能。
提示:从PHP 5.3.0 开始发布的Windows版已经不支持ISAPI模式了,下载的php压缩包中没有php5isapi.dll,所以推荐FastCGI方式运行PHP。
如何查看当前运行的PHP的版本?
一个很简单的办法就是phpinfo();
Thread Safety disabled是NTS,enabled是TS
Configure Command看到VC98字样的是VC6,Compiler标明 MSVC9 (Visual C++ 2008) 的是VC9
原文地址:http://www.admin10000.com/document/56.html
CSS隐藏滚动条
一些资料说 <boby>里加入scroll="no",可隐藏滚动条;
在<boby>里加入style="overflow-x:hidden",可隐藏水平滚动条;加入style="overflow-y:hidden",可隐藏垂直滚动条。但不通用,最终的解决办法:
在页面添加:
<style>
html { overflow-x:hidden;
//隐藏水平滚动条
overflow-y:hidden;//隐藏垂直滚动条
}
</style>
css实现强制不换行/自动换行/强制换行
强制不换行
div{
white-space:nowrap;
}
自动换行
div{
word-wrap: break-word;
word-break: normal;
}
强制英文单词断行
div{
word-break:break-all;
}