【原创】nginx负载均衡实例,亲测
nginx不单可以作为强大的web服务器,也可以作为一个七层的反向代理服务器,而且nginx还可以按照调度规则实现动态、静态页面的分离,可以按照轮询、ip哈希、URL哈希、权重等多种方式对后端服务器做负载均衡,同时还支持后端服务器的健康检查。
如果将web服务器集群当做一个城池,那么负载均衡服务器就相当于城门,重要性不言而喻,如果“城门”关闭了,与外界的通道也就掐断了,如果只有一台nginx负载均衡服务器,当该服务器发生故障时,则会整个网站无法访问,因此,就需要两台以上的nginx负载均衡服务器,实现故障转移与高可用,双机高可用暂不详细介绍。
下面就是一个生产实例。
aaa.liuxinxiu.com 和 bbb.liuxinxiu.com 域名均指向 Nginx 所在的服务器IP。
用户访问http://aaa.liuxinxiu.com/,将其负载均衡到120.9.123.121:80、202.108.22.142:80 这两台服务器。
用户访问http://bbb.liuxinxiu.com/,将其负载均衡到60.5.185.59:80、120.9.123.121:80、202.108.22.142:80 这三台服务器。
============================================================================
注意:
ip_hash来代替默认的rr方式,即可以将某客户端IP的请求通过哈希算法定位到同一台后端web服务器上,这样避免了session丢失,解决了session问题。但ip_hash指令无法保证后端服务器的负载均衡,可能有些后端服务器接收的请求多,有些后端服务器接收的请求少;这样失去了负载均衡的意义,所以,如果后端的动态应用服务器做到session共享,还是建议采用后端服务器的session共享方式来代替nginx的ip_hash方式。
===================================================================】】
以下是AAA组分配的2组负载均衡服务器,规则更加反应速度,快者NGINX优先选择,ip_hash; 这种形式只能使用IP分配!
BBB组分配的三组负载均衡服务器,采用默认顺序规则,由上至下依次选择,如果最上边60.5.185.59这组服务器DOWN掉选择中间120.9.123.121这组,如果中间这组挂掉则NGINX自动202.108.22.142最下边这组IP主机!
BBB虚拟主机SERVER中的配置内容:
注,选择中的部分:
#root /ftp/101;
index index.html index.htm index.php;
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
expires 30d;
}
location ~ .*\.(htm|html|js|css)$ {
expires 1h;
}
可以忽略不添加,或者注释掉也可以!!!!!!
AAA在SERVER中的添加内容和BBB类似!
Nginx Location 语法,与简单配置
一、介绍Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”, 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器.
二、Location语法语法:location [=|~|~*|^~] /uri/ { … }
注:
1、~ 为区分大小写匹配
2、~* 为不区分大小写匹配
3、!~和!~*分别为区分大小写不匹配及不区分大小写不匹配
示例一:
location / { }
匹配任何查询,因为所有请求都以 / 开头。但是正则表达式规则将被优先和查询匹配。
示例二:
location =/ {}
仅仅匹配/
示例三:
location ~* \.(gif|jpg|jpeg)$ {
rewrite \.(gif|jpg)$ /logo.png;
}
注:不区分大小写匹配任何以gif,jpg,jpeg结尾的文件
三、ReWrite语法
last - 基本上都用这个Flag。
break - 中止Rewirte,不在继续匹配
redirect - 返回临时重定向的HTTP状态302
permanent - 返回永久重定向的HTTP状态301
1、下面是可以用来判断的表达式:
-f和!-f用来判断是否存在文件
-d和!-d用来判断是否存在目录
-e和!-e用来判断是否存在文件或目录
-x和!-x用来判断文件是否可执行
2、下面是可以用作判断的全局变量
例:http://localhost:88/test1/test2/test.php
$host:localhost
$server_port:88
$request_uri:http://localhost:88/test1/test2/test.php
$document_uri:/test1/test2/test.php
$document_root:D:\nginx/html
$request_filename:D:\nginx/html/test1/test2/test.php
四、Redirect语法
server {
listen 80;
server_name start.igrow.cn;
index index.html index.php;
root html;
if ($http_host !~ "^www\.itlearner\.com$ {
rewrite ^(.*) http://www.itlearner.com$1 redirect;
}
}
五、防盗链location ~* \.(gif|jpg|swf)$ {
valid_referers none blocked start.igrow.cn sta.igrow.cn;
if ($invalid_referer) {
rewrite ^/ http://$host/logo.png;
}
}
六、根据文件类型设置过期时间
location ~* \.(js|css|jpg|jpeg|gif|png|swf)$ {
if (-f $request_filename) {
expires 1h;
break;
}
}
七、禁止访问某个目录
location ~* \.(txt|doc)${
root /data/www/wwwroot/linuxtone/test;
deny all;
}
++ 一些可用的全局变量
$args
$content_length
$content_type
$document_root
$document_uri
$host
$http_user_agent
$http_cookie
$limit_rate
$request_body_file
$request_method
$remote_addr
$remote_port
$remote_user
$request_filename
$request_uri
$query_string
$scheme
$server_protocol
$server_addr
$server_name
$server_port
$uri
nginx负载均衡和lvs负载均衡的比较分析【转载】
lvs和nginx都可以用作多机负载的方案,它们各有优缺,在生产环境中需要好好分析实际情况并加以利用。
首先提醒,做技术切不可人云亦云,我云即你云;同时也不可太趋向保守,过于相信旧有方式而等别人来帮你做垫被测试。把所有即时听说到的好东西加以钻研,从而提高自己对技术的认知和水平,乃是一个好习惯。
下面来分析一下两者:
一、lvs的优势:
1、抗负载能力强,因为lvs工作方式的逻辑是非常之简单,而且工作在网络4层仅做请求分发之用,没有流量,所以在效率上基本不需要太过考虑。在我手里的lvs,仅仅出过一次问题:在并发最高的一小段时间内均衡器出现丢包现象,据分析为网络问题,即网卡或linux2.4内核的承载能力已到上限,内存和cpu方面基本无消耗。
2、配置性低,这通常是一大劣势,但同时也是一大优势,因为没有太多可配置的选项,所以除了增减服务器,并不需要经常去触碰它,大大减少了人为出错的几率。
3、工作稳定,因为其本身抗负载能力很强,所以稳定性高也是顺理成章,另外各种lvs都有完整的双机热备方案,所以一点不用担心均衡器本身会出什么问题,节点出现故障的话,lvs会自动判别,所以系统整体是非常稳定的。
4、无流量,上面已经有所提及了。lvs仅仅分发请求,而流量并不从它本身出去,所以可以利用它这点来做一些线路分流之用。没有流量同时也保住了均衡器的IO性能不会受到大流量的影响。
5、基本上能支持所有应用,因为lvs工作在4层,所以它可以对几乎所有应用做负载均衡,包括http、数据库、聊天室等等。
另:lvs也不是完全能判别节点故障的,譬如在wlc分配方式下,集群里有一个节点没有配置VIP,会使整个集群不能使用,这时使用wrr分配方式则会丢掉一台机。目前这个问题还在进一步测试中。所以,用lvs也得多多当心为妙。
二、nginx和lvs作对比的结果
1、nginx工作在网络的7层,所以它可以针对http应用本身来做分流策略,比如针对域名、目录结构等,相比之下lvs并不具备这样的功能,所以nginx单凭这点可利用的场合就远多于lvs了;但nginx有用的这些功能使其可调整度要高于lvs,所以经常要去触碰触碰,由lvs的第2条优点看,触碰多了,人为出问题的几率也就会大。
2、nginx对网络的依赖较小,理论上只要ping得通,网页访问正常,nginx就能连得通,nginx同时还能区分内外网,如果是同时拥有内外网的节点,就相当于单机拥有了备份线路;lvs就比较依赖于网络环境,目前来看服务器在同一网段内并且lvs使用direct方式分流,效果较能得到保证。另外注意,lvs需要向托管商至少申请多一个ip来做Visual IP,貌似是不能用本身的IP来做VIP的。要做好LVS管理员,确实得跟进学习很多有关网络通信方面的知识,就不再是一个HTTP那么简单了。
3、nginx安装和配置比较简单,测试起来也很方便,因为它基本能把错误用日志打印出来。lvs的安装和配置、测试就要花比较长的时间了,因为同上所述,lvs对网络依赖比较大,很多时候不能配置成功都是因为网络问题而不是配置问题,出了问题要解决也相应的会麻烦得多。
4、nginx也同样能承受很高负载且稳定,但负载度和稳定度差lvs还有几个等级:nginx处理所有流量所以受限于机器IO和配置;本身的bug也还是难以避免的;nginx没有现成的双机热备方案,所以跑在单机上还是风险较大,单机上的事情全都很难说。
5、nginx可以检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等,并且会把返回错误的请求重新提交到另一个节点。目前lvs中ldirectd也能支持针对服务器内部的情况来监控,但lvs的原理使其不能重发请求。重发请求这点,譬如用户正在上传一个文件,而处理该上传的节点刚好在上传过程中出现故障,nginx会把上传切到另一台服务器重新处理,而lvs就直接断掉了,如果是上传一个很大的文件或者很重要的文件的话,用户可能会因此而恼火。
6、nginx对请求的异步处理可以帮助节点服务器减轻负载,假如使用apache直接对外服务,那么出现很多的窄带链接时apache服务器将会占用大量内存而不能释放,使用多一个nginx做apache代理的话,这些窄带链接会被nginx挡住,apache上就不会堆积过多的请求,这样就减少了相当多的内存占用。这点使用squid也有相同的作用,即使squid本身配置为不缓存,对apache还是有很大帮助的。lvs没有这些功能,也就无法能比较。
7、nginx能支持http和email(email的功能估计比较少人用),lvs所支持的应用在这点上会比nginx更多。
在使用上,一般最前端所采取的策略应是lvs,也就是DNS的指向应为lvs均衡器,lvs的优点令它非常适合做这个任务。
重要的ip地址,最好交由lvs托管,比如数据库的ip、webservice服务器的ip等等,这些ip地址随着时间推移,使用面会越来越大,如果更换ip则故障会接踵而至。所以将这些重要ip交给lvs托管是最为稳妥的,这样做的唯一缺点是需要的VIP数量会比较多。
nginx可作为lvs节点机器使用,一是可以利用nginx的功能,二是可以利用nginx的性能。当然这一层面也可以直接使用squid,squid的功能方面就比nginx弱不少了,性能上也有所逊色于nginx。
nginx也可作为中层代理使用,这一层面nginx基本上无对手,唯一可以撼动nginx的就只有lighttpd了,不过lighttpd目前还没有能做到nginx完全的功能,配置也不那么清晰易读。另外,中层代理的IP也是重要的,所以中层代理也拥有一个VIP和lvs是最完美的方案了。
nginx也可作为网页静态服务器,不过超出了本文讨论的范畴,简单提一下。
具体的应用还得具体分析,如果是比较小的网站(日PV<1000万),用nginx就完全可以了,如果机器也不少,可以用DNS轮询,lvs所耗费的机器还是比较多的;大型网站或者重要的服务,机器不发愁的时候,要多多考虑利用lvs。
【原创】Linux 配置Nginx反向代理(可用于负载均衡)
反向代理是什么?
反向代理指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部(或其他)网络上的服务器,并将从服务器上得到的结果返回给Internet上请求连接的客户端。
实现方法:
比如我想在Nginx上建一个bbb的域名,使用NGINX通过该域名反向代理访问百度网站,首先在把bbb添加值本机HOST文件中,WINDOWS机器在:C:\WINDOWS\system32\drivers\etc 下修改hosts 用记事本打开在127.0.0.1 下一行添加:
127.0.0.1 localhost
221.221.161.147 bbb
IP地址部分对应你的LINUX主机IP
bbb 为测试域名
再在Linux上修改Nginx的配置文件,添加如下:
server
{
listen 80;
server_name bbb;
location / {
proxy_pass http://www.baidu.com/;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
-----------------------------------------------------------------------------------------------------------------
添加好后,先执行:/usr/local/nginx/sbin/nginx -t 检查配置是否正常,如果显示:the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok configuration file /usr/local/nginx/conf/nginx.conf test is successful 则正常,否则按错误提示修改配置。
再执行 kill -HUP `cat /usr/local/nginx/logs/nginx.pid` 使配置生效,域名解析生效后就可以通过BBB 访问百度了。
=================================================================
server
{
listen 8080;
server_name 192.168.2.127;
location / {
proxy_pass http://www.baidu.com/;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
==============================================
【原创】Win2003下discuz论坛转移至Lnmp下注意事项(Rewrite重写、上传附件目录权限)
Discuz!在Nginx下的Rewrite
完整正确的Discuz!在Nginx下的Rewrite如下:
蓝色部分为完整的配置内容添加至,虚拟主机 server{} 内,不要放到 location {} 以内!
使之单独存在于:server{
location {}
if (!-e $request_filename)
{
rewrite ^/archiver/((fid|tid)-[w-]+.html)$ /archiver/index.php?$1 last;
rewrite ^/forum-([0-9]+)-([0-9]+).html$ /forumdisplay.php?fid=$1&page=$2 last;
rewrite ^/thread-([0-9]+)-([0-9]+)-([0-9]+).html$ /viewthread.php?tid=$1&extra=page%3D$3&page=$2 last;
rewrite ^/space-(username|uid)-(.+).html$ /space.php?$1=$2 last;
rewrite ^/tag-(.+).html$ /tag.php?name=$1 last;
break;
}
=======================================================================
discuz论坛由WIN移至Linux下,附件文件无法保存到服务器上的问题解决方案!
提示信息:附件文件无法保存到服务器,可能是目录属性设置问题,请与管理员联系。
解决方法:
问题1:attachement目录是否设置属性777,win主机属性everyone
DIDCUZ安装时提示: 设置目录属性(windows 服务器可忽略这一步)
以下这些目录需要可读写权限
./templates
./attachments
./forumdata
./forumdata/cache
./forumdata/templates
./forumdata/threadcaches
./forumdata/logs
LINUX下以上目录统一修改权限为777:
chown -R 777 templates
chown -R 777 attachments
chown -R 777 forumdata
chown -R 777 forumdata/cache
chown -R 777 forumdata/templates
chown -R 777 forumdata/threadcaches
chown -R 777 forumdata/logs
问题2:php.ini中的设置可能存在问题
将;upload_tmp_dir = 该行的注释符,即前面的分号“;”去掉,使该行在php.ini文档中起作用。upload_tmp_dir是用来定义上传文件存放的临时路径,在这里你还可以修改并给其定义一个绝对路径,这里设置的目录必须有读写权限。付给WWW可执行权限。
另外:
在nginx.conf增加 client_max_body_size的相关设置, 这个值默认是1m,可以增加到8m以增加提高文件大小限制;
如果运行的是php,那么还要检查php.ini,这个大小client_max_body_size要和php.ini中的如下值的最大值一致或者稍大,这样就不会因为提交数据大小不一致出现的错误。
post_max_size = 8M
upload_max_filesize = 2M
在php.ini中upload_max_filesize 的参数设置也增加到8M和NGINX相互一直,若不需要用上传超大附件,可以在DISCUZ后台限制用户上传附件大小 8M<
以上全部更改,确保了附件目录拥有了足够了权限之后若还说不能上传。见问题3
问题3:DISCUZ 后台更改附件附件 URL 地址
DISCUZ 默认设置:
后台 基本设置 附件设置 不小心开启远程附件或者没有设置完整也会出现此问题
后台 基本设置 附件设置 设置的附件保存方式为其他方式 不是保存在同一目录下 部分服务器限制了目录属性 导致无法上传附件(虚拟空间出现的比例较多)
可以尝试把附件 URL 地址: 修改为绝对路径如:
http://bbs.liuxinxiu.com/attachments
liuxinxiu 换成你的域名,不再根目录下加加子目录:http://www.liuxinxiu.com/bbs/attachments
==================================================================
【转载】使用PHP-FPM避免Nginx下的spawn-fcgi漏洞
之前传出的nginx漏洞其实不算是nginx的问题,而是spawn-fcgi的漏洞。张宴的博客总结了一份比较简单的方法(再提供一种解决Nginx文件类型错误解析漏洞的方法),利用正则规避了这个问题。不过这些解决方法都是治标不治本,我个人建议使用php-fpm代替spawn-fcgi。
php-fpm曾经是PHP项目的一个补丁,旨在将FastCGI进程管理整合进PHP包中。现在我们可以在最新的PHP 5.3.2的源码树里下载得到直接整合了php-fpm的分支,据说下个版本会融合进PHP的主分支去。
相对spawn-fcgi,php-fpm在CPU和内存方面的控制都更胜一筹,而且前者很容易崩溃,必须用crontab进行监控,而php-fpm则没有这种烦恼。
如果你使用Ubuntu/Debian而且不想编译,可以尝试这个方法,安装最新的PHP 5.3.2及php-fpm 0.6包。但我个人使用的过程中发现这种方式可能导致一些像mcrypt等扩展无法使用,所以还是采用了源码安装的方式。
先确定安装了subversion等一些包
$ sudo apt-get install bison libxml2-dev libbz2-dev libpcre3-dev libssl-dev zlib1g-dev libmcrypt-dev libmhash-dev libmhash2 libcurl4-openssl-dev libpq-dev libpq5 libsyck0-dev
$ svn co http://svn.php.net/repository/php/php-src/branches/PHP_5_3_FPM php_5_3_fpm$ cd php_5_3_fpm
请先确定已经安装了autoconf2.13这个包,注意版本号。新版本的autoconf可能会导致无法生成配置文件
$ ./buildconf --force
配置你的php,一定要有--enable-fpm
$ ./configure --enable-fpm --with-foo --enable-bar...
我使用的配置方式,ubuntu的很多开发包没有安装,所以这个步要安装各种开发包,挺花时间的。
$ ./configure --enable-fastcgi --enable-fpm --with-mcrypt --with-zlib --enable-mbstring --with-pdo --with-pgsql --with-curl --disable-debug --enable-pic --enable-inline-optimization --with-xml --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --with-mhash --enable-xslt --enable-memcache --enable-zip --with-pcre-regex --with-gd --with-sqlite --enable-exif --enable-zip --enable-ftp --with-pear --with-libxml-dir --with-mysql --with-openssl
编译和安装
$ sudo make && make install
安装后修改/usr/local/etc/php-fpm.conf,把所有的nobody改成你运行php-fpm的用户组和用户名,一般是www-data。修改一下,如果你的服务器内存比较小,建议从5开始递增修改,子进程会占用比较多的内存。
<value name="max_children">5</value>
完成后,运行
php-fpm -c /path/to/your/php.ini
这个操作没有回显,默认在127.0.0.1:9000打开一个PHP的fastcgi服务,用类似spawn-fcgi的方法把php文件的处理pass给php-fpm即可。记得加入下面的参数,以避免一些古怪的问题引起502 Gateway错误。
location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /path/to/your/root$fastcgi_script_name; fastcgi_connect_timeout 60; fastcgi_send_timeout 180; fastcgi_read_timeout 180; fastcgi_buffer_size 128k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; include fastcgi_params; }
【原创】关于wget、get、 put 及其网络管理优先采用的数据传输方式。
本人局域网内构建2台机器A+B , A 为LINUX操作系统,B为WIN-XP 。
作为局域网可以不考虑外网带宽问题,测试项目如下:
假设以LINUX为服务器环境,测试一:快速备份LINUX上的压缩文件最佳方式使用多线程下载工作【迅雷等】下载已经在LINUX端压缩好的备份文件速度局域网内可达10MB/S :
测试二:快速传送XP机上的文件至LINUX 【采用了put 、get 、wget】三种方式做对比@如下:
由以上可以看出,以SSH自带SFTP 的PUT 上传命令上传XP---至-----LINUX 传输文件,速度并不是很理想。仅均5000KB/秒
以下看下使用SSH 中SFTP的下行命令get 【备份LINUX文件至XP本地】如图:
速度仅为6000KB/秒 相对 迅雷的10MB 还是不及。
然后再看下使用SSH下Wget 下载命令,提前开开XP的WEB服务器,设置APACHE无下载限制。
速度为9MB/秒,和使用迅雷相当!!
如此得出结论:我们平时传输数据时,无论相对本地的上传和下载。尽可能地使用下载命令。
本地WIN 备份远程 LINUX 数据可以 迅雷 多线程下载工具!@
本地LINUX备份远程LINUX或者WIN主机可以使用SSH中下载命令 WGET
上传本地XP数据至远程LINUX可以SSH从远程使用WGET 下载“本地”数据【前提开WEB服务,配置无下载限制,ADSL临时获取IP用户方便使用】
上传本地XP或者LINUX 上传数据至远程LINUX 还可以使用SSH连接远程使用自带的SFTP用 PUT 下载 【速度无一般无优势】
=======================================================================
转载请注明 文章来源:http://liuxinxiu.com/wget_get_put/
【原创】WINDOWS下压缩tar.gz 的方法。(使用7z软件)
本人网站最起初有运作在WIN上,由于更换LINUX操作系统,数据迁移必不可少,ZIP RAR 等文件在LINUX 下支持都不是很理想,索性直接在WIN 下压缩成tar.gz 文件!
tar.gz 是linux和unix下面比较常用的格式,几个命令就可以把文件压缩打包成tar.gz格式,然而这种格式在windows并不多见,WinRAR、WinZip等主流压缩工具可以释放解开,却不能打包生成。但是tar.gz在服务器端却很常用,因为服务器系统linux占了相当的一部分。于是许多习惯用Windows的Web开发人员,在上传网站到空间时可能会遇到这个压缩格式的麻烦。如何生成得到tar.gz压缩包,在网上搜了一下除了复杂的命令行和开源软件之外,似乎没有其他的。偶然发现“7-ZIP”这个软件可以很方便地解决这个问题。
压缩前文件夹属性
压缩成.TAR 后文件属性
压缩成:WebRoot.tar 大小没有缩小,反而增大了些!
在:WebRoot.tar 基础上再次压缩成:WebRoot.tar.gz 最后大小:2.71GB
具体步骤如下:
一、安装7-ZIP以后,直接在你想要打包的文件上点右键菜单,会有一个7-ZIP的子菜单栏,类似WinRAR和WinZIP的那种右键菜单。然后选“7-ZIP”->“添加到压缩档案”,在弹出来的窗口里有个“压缩格式”的选项,里面并没有tar.gz格式,没关系,里面有一个Tar格式,第一步就是要先压成tar格式。
二、成功打包为Tar文件后,你可能会发现这个tar文件包和原来的文件大小一样,也就是说tar本身并没有压缩,而是仅仅把它们打包成一个单独的Tar文件。所以需要做第二步,再在这个tar文件上面点右键,选“7-ZIP”->“添加到压缩档案”,这时候弹出的窗口里再看“压缩格式选项”,发现多了两个刚才没有的,其中就包括“GZip”,是的,这一步就是把tar文件继续压缩成GZip。选择“GZip”格式后确定,最后结果就是一个新的tar.gz格式的文件。
经本人测试,兼容各种软件,上传到服务器上也没有问题。整个过程鼠标流,完全不用敲什么命令行。至此,在windows下面得到tar.gz完成。
另外再记下一件事,在Cpanel 11 控制面板下面的File Manager 文件管理器中,有在线打包(Compress)和解压(Extract)功能,支持ZIP和Tar.gz等格式,RAR好像不行。关于这个解压功能的“是否覆盖存在文件”,如果压缩包是ZIP格式会有几行提示说是否要覆盖,不用费力去想怎样才能完成这个选择,实际上这几行字是不能点击的,它会默认选否,不覆盖。那么问题就来了,如果要想覆盖原有的文件怎么办?Cpanel的官方网站什么不说,倒是在某个英文论坛角落找到了答案,就是使用tar.gz格式。tar.gz压缩包释放的时候会默认选覆盖,我试过了确实如此,够晕吧。
========================================================================
转载请标明出处:http://liuxinxiu.com/win_tar_gz/
mysql 赋给用户权限 grant all privileges on
遇到了 SQLException: access denied for @'localhost' (using password: no)
解决办法 grant all privileges on *.* to joe@localhost identified by '1';
flush privileges;
拿 joe 1 登陆
附:
mysql> grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接口令’;
权限1,权限2,…权限n代表select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14个权限。
当权限1,权限2,…权限n被all privileges或者all代替,表示赋予用户全部权限。
当数据库名称.表名称被*.*代替,表示赋予用户操作服务器上所有数据库所有表的权限。
用户地址可以是localhost,也可以是ip地址、机器名字、域名。也可以用’%'表示从任何地址连接。
‘连接口令’不能为空,否则创建失败。
mysql>grant select,insert,update,delete,create,drop on vtdc.employee to joe@10.163.225.87 identified by ‘123′;
给来自10.163.225.87的用户joe分配可对数据库vtdc的employee表进行select,insert,update,delete,create,drop等操作的权限,并设定口令为123。
mysql>grant all privileges on vtdc.* to joe@10.163.225.87 identified by ‘123′;
给来自10.163.225.87的用户joe分配可对数据库vtdc所有表进行所有操作的权限,并设定口令为123。
mysql>grant all privileges on *.* to joe@10.163.225.87 identified by ‘123′;
给来自10.163.225.87的用户joe分配可对所有数据库的所有表进行所有操作的权限,并设定口令为123。
mysql>grant all privileges on *.* to joe@localhost identified by ‘123′;
给本机用户joe分配可对所有数据库的所有表进行所有操作的权限,并设定口令为123。
Linux各个挂载点及其分区介绍
本文介绍Linux常用分区挂载点常识以及桌面、服务器分区挂载点的推荐配置,当然这个配置是天缘自己写的,分区大小这个话题是仁者见仁智者见智,欢迎大家一起交流这个话题,比如WEB服务、邮件服务、下载服务等,我们一起交流哪种类型服务下某挂载点应该加大就可以了,至于是否独立就看个人的了。
一、Linux分区挂载点介绍
Linux分区挂载点介绍,推荐容量仅供参考不是绝对,跟各系统用途以及硬盘空间配额等因素实际调整:
当然上面这么多挂载点,实际上是没有比较每个目录都单独进行挂载,我们只需要根据自己的实际使用需要对个别目录进行挂载,这样系统结构看起来也会精简很多。
一般来讲Linux系统最少的挂载点有两个一个是根挂载点/,另一个是swap,虽然swap也可以采用其他方式类似方式替代,但从使用角度,天缘认为没这个必要,把swap单独设置一个挂载点似乎对Linux系统的标准性更好支持。
二、Linux系统桌面、服务器分区推荐方案
下面以80G独立硬盘安装Ubuntu为例,列一下简单的分区方案。
1、普通桌面用户推荐分区方案(示例:80G桌面用户):
2、服务器用户推荐分区方案一(示例:80GWEB服务器用户,用户程序与系统程序合用usr):
2、服务器用户推荐分区方案二(示例:80GWEB服务器用户,用户程序与系统程序分用opt和usr):
分区方案关键点:
——大数据库一般要加大/usr挂载点
——多用户、下载类、多存储文件等要加大/home挂载点
——文件小,用户多要注意/tmp和/var挂载点大小
linux中,磁盘分区是一个物理概念,挂载点及其文件系统是一个逻辑概念,挂载是针对物理上的硬盘或其他存储空间。将某一存储介质挂载到文件系统,实际上就是相当于给许多门,分配门牌号码。
sda3挂载在/home上面,现在需要将sda9挂载在/home/pt/Videos上面
sudo mount /dev/sda9 /home/pt/Videos
sudo chmod 777 /home/pt/Videos 也可以sudo chmod 777 /dev/sda9
如果不设置这个文件夹或者磁盘的权限为777(任何人都有读写执行权),会出现各种问题
1、进入 /home/pt/Videos鼠标邮件的粘帖及其许多功能键无法使用,只能sudo cp,sudo mv方式操作文件
2、无法使用gedit等软件保存文件到/home/pt/Videos ,等各种问题
sudo mount /dev/sda9 /home/pt/Videos后,会出现以前/home/pt/Videos上有的文件,现在无法看见的情况,这是符合逻辑的,/home/pt/Videos以前同/home一起挂载在sda3上,现在将sda3挂载到另外一个地方,打开sda3就可以看见一个名为的/home/pt/Videos文件夹,上面有以前的文件。
linux可以做到:
一个分区设置多个挂载点
多个分区设置一个挂载点。
1.一个分区设置多个挂载点
pt@pt-laptop:~$ sudo mount /dev/sda8 /mnt
pt@pt-laptop:~$ sudo mount /dev/sda8 /home/pt/Videos
pt@pt-laptop:~$ sudo chmod 777 /mnt
pt@pt-laptop:~$ sudo chmod 777 /home/pt/Videos
此时,如果复制一个文件test到 /home/pt/Videos ,打开/mnt 也可以看见,此时test在两个逻辑分区上,只在一个物理分区上,如果在/mnt 删除test文件,打开/home/pt/Videos 也看不见了,如果在/home/pt/Videos复制一个test1,在/mnt中也可以看见,在/home/pt/Videos删除test1,在/mnt中也消失。
道理显而易见,/home/pt/Videos ,/mnt对应同一个物理区域,针对此物理区域的操作,两个逻辑区域由于对应同一物理区域的缘故,一个逻辑区域变动导致另一个逻辑区域也反应出同样的变动。
参见附件。
2.多个分区同一个挂载点
pt@pt-laptop:~$ sudo mount /dev/sda9 /mnt/sda9
pt@pt-laptop:~$ sudo mount /dev/sda10 /mnt/sda10
pt@pt-laptop:~$sudo cp /home/pt/test /mnt
此时的test文件在哪个物理分区上呢,此时test只在一个逻辑分区上,/home/pt/test。
通过下面的命令,依次打开sda8,sda9,sda10,可以发现,它在最后一个挂载的分区sda10上面。
pt@pt-laptop:~$ sudo mkdir /mnt/sda8 /mnt/sda9 /mnt/sda10
pt@pt-laptop:~$ sudo mount /dev/sda8 /mnt/sda8
pt@pt-laptop:~$ sudo mount /dev/sda9 /mnt/sda9
pt@pt-laptop:~$ sudo mount /dev/sda10 /mnt/sda10