Navicat新建/修改数据库用户权限

在服务器上部署项目时,我们往往要求每个项目有单独对应MySQL用户,我们可以通过Navicat进行配置。
我使用的Navicat Premium版本为11.1.8(64位):
Navicat-Premium-11.1.8-winx64下载地址:
下载地址http://download.csdn.net/detail/chenchunlin526/9851591  【Navicat Premium 11.1.8简体中文版(内含64位和32位版本,及注册方法)】

 

1、首先,需要登录一个具有root权限的连接(一般用root用户登录)。

1

2、点击“用户”可以看到当前MySQL的所有用户,点击“新建用户”。

2

 

3、点击“新建用户”。

3

4、然后,在“常规”里填入用户名密码,在“主机”这一项可填入localhost或%localhost表示该用户只能在本地访问,%表示该用户即可远程也可在本地访问。

4

“高级”和“服务器权限”这两项,可以根据实际需要进行设置,也可以不设置,都为空。

5

5、在“权限”里给这个用户添加数据库管理权限,以patyee为例。
注意:这里patyee是已经通过root用户建立的数据库,也是我们刚才新建的用户名(即数据库名称和用户名相同)。
当然也可以在“服务器权限”里给该用户配置相应创建数据库的权限。
6

7

 

8

到这里我们已经创建了一个新用户patyee,并给该用户赋予了patyee数据库的管理权限。

9

6、下边对已创建的用户进行连接测试

10

11

12

参考资料:

【1】数据库连接与sql编程工具 — Navicat Premium 的详细使用图解 – chunlynn的小屋 – CSDN博客

程序员应该关注的行业网站

programmer-good-to-best

中文网

CSDN极客头条

http://geek.csdn.net/

CSDN创立于1999年,是中国最大的IT社区和服务平台,为中国的软件开发者和IT从业者提供知识传播、职业发展、软件开发等全生命周期服务,满足他们在职业发展中学习及共享知识和信息、建立职业发展社交圈、通过软件开发实现技术商业化等刚性需求。

博客园

http://www.cnblogs.com/

博客园是一个面向开发者的知识分享社区。自创建以来,博客园一直致力并专注于为开发者打造一个纯净的技术交流社区,推动并帮助开发者通过互联网分享知识,从而让更多开发者从中受益。博客园的使命是帮助开发者用代码改变世界。

开源中国

http://www.oschina.net/

是目前中国最大的开源技术社区。传播开源的理念,推广开源项目,为 IT 开发者提供了一个发现、使用、并交流开源技术的平台。目前开源中国社区已收录超过两万款开源软件。

程序师

http://www.techug.com/

用程序师的眼光看世界。

知乎 程序员话题

https://www.zhihu.com/topic/19552330

程序员可以指在程序设计某个专业领域中的专业人士或是从事软件撰写,程序开发、维护的专业人员。

V2EX

https://www.v2ex.com/

一个关于分享和探索的地方,干净简洁的技术类社区,同时还保留开源项目。

 

 外文网

Infoq

http://www.infoq.com/

infoq上一个重点就是敏捷开发,内容很丰富,而且这个网站还提供中文版,但可能是翻译耗时的原因,中文内容总是比英文内容滞后几天。

Digg 的科技频道

http://www.digg.com/

Digg最初只是几个技术人员办的专门提供科技信息的网站,由于粉丝的不断增多,流量越来越大,网站的内容也扩展到非科技的各个方面,可糟糕的是,这导致了IT科技信息内容的质量不断下降,引起了很多元老级粉丝的不满,特别是去年这个网站的一次改版行动彻底的伤痛了粉丝的心,导致大批忠实粉丝撤离。网站的整个访问量几乎跌了一半。这是我眼睁睁的看到的一次由于改版而导致的灾难性事故的活生生的例子。

reddit 的编程和科技频道

https://www.reddit.com/r/programming/ 和 https://www.reddit.com/r/technology/

reddit和Digg非常的相似,但界面看起来粗糙一些。最近这个网站的访问量大增,原因就是从Digg撤离的人都跑到这里来了。

Hacker News

http://news.ycombinator.com/news

Hacker News 是我最喜欢的一个网站,虽然它的界面在上面提到的这些网站中是最简陋的。Hacker News属于ycombinator.com旗下网站,ycombinator是一个给科技创业公司提供创业资金的公司,很多著名的IT公司都是从这里出来。Hacker News上的很多文章都是关于如何创业的。

StackOverFlow

http://stackoverflow.com/

Stack Overflow是一个与程序相关的IT技术问答网站。用户可以在网站免费提交问题,浏览问题,索引相关内容,在创建主页的时候使用简单的HTML。在问题页面,我们不会弹出任何广告,销售信息,JavaScript 窗口等。

 

更多也可参考“极客导航”:http://www.gogeeks.cn/

LVS与Nginx作负载均衡对比

搭建负载均衡高可用环境相对简单,主要是要理解其中原理。此文描述了两种负载均衡器的优缺点,以便在实际的生产应用中,按需求取舍。
目前,在线上环境中应用较多的负载均衡器硬件有F5 BIG-IP,软件有LVS及Nginx,高可用软件有Heartbeat、Keepalived,成熟的架构有LVS+Keepalived、LVS+Heartbeat及Nginx+Keepalived。

两种负载均衡器的优缺点说明如下:

LVS的优点:

1、抗负载能力强、工作在第4层【传输层】仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的;无流量,同时保证了均衡器IO的性能不会受到大流量的影响;在我手里的 lvs,仅仅出过一次问题:在并发最高的一小段时间内均衡器出现丢包现象,据分析为网络问题,即网卡或linux2.4内核的承载能力已到上限,内存和 cpu方面基本无消耗;
2、工作稳定,自身有完整的双机热备方案,如LVS+Keepalived和LVS+Heartbeat;
3、应用工作在第4层,所以应用范围比较广,可以对所有应用做负载均衡;包括http、数据库、聊天室等;
4、配置性比较低,这是一个缺点也是一个优点,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率。

LVS的缺点:

 1、软件本身不支持正则处理,不能做动静分离,这就凸显了Nginx+Keepalived的优势。
 2、如果网站应用比较庞大,LVS+Keepalived就比较复杂了,特别是后面有Windows Server应用的机器,实施及配置还有维护过程就比较麻烦,相对而言,Nginx+Keepalived就简单多了。

Nginx的优点:

 1、工作在OSI第7层【应用层】,可以针对http应用做一些分流的策略。比如针对域名、目录结构。它的正则比较强大和灵活;相比之下lvs并不具备这样的功能,所以 nginx单凭这点可利用的场合就远多于lvs了;

 2、Nginx对网络的依赖非常小,理论上能ping通就就能进行负载功能,nginx就能连得通,nginx同时还能区分内外网,如果是同时拥有内外网的节点,就相当于单机拥有了备份线路;lvs就比较依赖于网络环境,这个也是它的优势所在;

 3、Nginx安装和配置比较简单,测试起来比较方便;因为它基本能把错误用日志打印出来。lvs的安装和配置、测试就要花比较长的时间了,因为同上所述,lvs对网络依赖比较大,很多时候不能配置成功都是因为网络问题而不是配置问题,出了问题要解决也相应的会麻烦得多。

 4、可以承担高的负载压力且稳定,一般能支撑超过几万次的并发量;

 5、Nginx可以通过端口检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等,并且会把返回错误的请求重新提交到另一个节点;

 6、Nginx不仅仅是一款优秀的负载均衡器/反向代理软件,它同时也是功能强大的Web应用服务器。LNMP现在也是非常流行的web环境,大有和LAMP环境分庭抗礼之势,Nginx在处理静态页面、特别是抗高并发方面相对apache有优势;

 7、Nginx现在作为Web反向加速缓存越来越成熟了,速度比传统的Squid服务器更快,有需求的朋友可以考虑用其作为反向代理加速器;

 8、nginx可以检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等,并且会把返回错误的请求重新提交到另一个节点。

Nginx的缺点:

 1、服务器的健康状态只支持通过端口来检测,不支持通过url来检测;

 2、Nginx对big request header的支持不是很好,如果client_header_buffer_size设置的比较小,就会返回400bad request页面;

 3、不支持session保持;

 4.nginx配置文件可调整,所以经常要去触碰触碰,触碰多了,人为出问题的几率也就会大。

建议

因为LVS忒牛了,配置也最麻烦了,而Nginx自己就有,而且配置超级简单。所以建议,如果网站访问量不是门户级别的用NGINX就OK了,到了门户级别在用LVS吧。

参考:https://yq.aliyun.com/articles/49042

Linux环境变量设置

关于PATH的作用:

PATH说简单点就是一个字符串变量,当输入命令的时候LINUX会去查找PATH里面记录的路径。比如在根目录/下可以输入命令ls,在/usr目录下也可以输入ls,但其实ls这个命令根本不在这个两个目录下,事实上当你输入命令的时候LINUX会去/bin,/usr/bin,/sbin等目录下面去找你此时输入的命令,而PATH的值恰恰就是/bin:/sbin:/usr/bin:……。其中的冒号使目录与目录之间隔开。

格式:

export PATH=$PATH:<PATH 1>:<PATH 2>:<PATH 3>:……:<PATH N>

 

关于新增自定义路径:

环境变量文件:/etc/profile

现在假设你新安装了一个命令在/usr/locar/new/bin下面,而你又想像ls一样在任何地方都使用这个命令,你就需要修改环境变量PATH了,准确的说就是给PATH增加一个值/usr/locar/new/bin。你只需要一行bash命令export PATH=$PATH:/usr/locar/new/bin。这条命令的意思太清楚不过了,使PATH自增:/usr/locar/new/bin,既PATH=PATH+":/usr/locar/new/bin"(注意:= 即等号两边不能有任何空格);通常的做法是把这行bash命令写到/etc/profile的末尾,然后当你重新登陆LINUX的时候(应该是linux启动时就会执行这个文件),新的默认路径就添加进去了。当然这里你直接用source /etc/profile执行这个文件重新登陆了。你可以用echo $PATH命令查看PATH的值。

查看所有环境变量:

env

mysql 插入更新语句

如果在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则在出现重复值的行执行UPDATE;如果不会导致唯一值列重复的问题,则插入新行。
例如,如果列 a 为 主键 或 拥有UNIQUE索引,并且包含值1,则以下两个语句具有相同的效果:

INSERT INTO TABLE (a,c) VALUES (1,3) ON DUPLICATE KEY UPDATE c=c+1;

UPDATE TABLE SET c=c+1 WHERE a=1;

如果行作为新记录被插入,则受影响行的值显示1;如果原有的记录被更新,则受影响行的值显示2。
这个语法还可以这样用:
如果INSERT多行记录(假设 a 为主键或 a 是一个 UNIQUE索引列):

INSERT INTO TABLE (a,c) VALUES (1,3),(1,7) ON DUPLICATE KEY UPDATE c=c+1;

执行后, c 的值会变为 4 (第二条与第一条重复, c 在原值上+1).

INSERT INTO TABLE (a,c) VALUES (1,3),(1,7) ON DUPLICATE KEY UPDATE c=VALUES(c);

执行后, c 的值会变为 7 (第二条与第一条重复, c 在直接取重复的值7).
注意:ON DUPLICATE KEY UPDATE只是MySQL的特有语法,并不是SQL标准语法!
这个语法和适合用在需要 判断记录是否存在,不存在则插入存在则更新的场景.

INSERT INTO .. ON DUPLICATE KEY更新多行记录
如果在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则执行旧行UPDATE;如果不会导致唯一值列重复的问题,则插入新行。例如,如果列a被定义为UNIQUE,并且包含值1,则以下两个语句具有相同的效果:

INSERT INTO TABLE (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1;

UPDATE TABLE SET c=c+1 WHERE a=1;

如果行作为新记录被插入,则受影响行的值为1;如果原有的记录被更新,则受影响行的值为2。

现在问题来了,如果INSERT多行记录, ON DUPLICATE KEY UPDATE后面字段的值怎么指定?要知道一条INSERT语句中只能有一个ON DUPLICATE KEY UPDATE,到底他会更新一行记录,还是更新所有需要更新的行。这个问题困扰了我很久了,其实使用VALUES()函数一切问题都解决了。

举个例子,字段a被定义为UNIQUE,并且原数据库表table中已存在记录(2,2,9)和(3,2,1),如果插入记录的a值与原有记录重复,则更新原有记录,否则插入新行:

INSERT INTO TABLE (a,b,c) VALUES 
(1,2,3),
(2,5,7),
(3,3,6),
(4,8,2)
ON DUPLICATE KEY UPDATE b=VALUES(b);

以上SQL语句的执行,发现(2,5,7)中的a与原有记录(2,2,9)发生唯一值冲突,则执行ON DUPLICATE KEY UPDATE,将原有记录(2,2,9)更新成(2,5,9),将(3,2,1)更新成(3,3,1),插入新记录(1,2,3)和(4,8,2)
注意:ON DUPLICATE KEY UPDATE只是MySQL的特有语法,并不是SQL标准语法!