精华内容
下载资源
问答
  • MySql数据库中小型网站后台数据库的首选,因为它对非商业应用免费的.网站开发者可以搭建一个"Linux+Apache+PHP+MySql"平台,这一...当前一般用户的开发环境多Windows或Linux,用户可以到http://www.codepub.co...

    MySql数据库是中小型网站后台数据库的首选,因为它对非商业应用是免费的.网站开发者可以搭建一个"Linux+Apache+PHP+MySql"平台,这是一个最省钱的高效平台.在使用MySql进行开发时,MySql自带的文档对于新手来说是份很好的参考资料.本文是我在使用MySql中的小小心得。

    当前一般用户的开发环境多是Windows或Linux,用户可以到http://www.codepub.com/software/index.html下载相关版本进行安装,在windows中MySql以服务形式存在,在使用前应确保此服务已经启动,未启动可用netstartmysql命令启动。而Linux中启动时可用“/etc/rc.d/init.d/mysqldstart"命令,注意启动者应具有管理员权限。

    刚安装好的MySql包含一个含空密码的root帐户和一个匿名帐户,这是很大的安全隐患,对于一些重要的应用我们应将安全性尽可能提高,在这里应把匿名帐户删除、root帐户设置密码,可用如下命令进行:

    usemysql;

    deletefromUserwhereUser="";

    updateUsersetPassword=PASSWORD('newpassword')whereUser='root';

    如果要对用户所用的登录终端进行限制,可以更新User表中相应用户的Host字段,在进行了以上更改后应重新启动数据库服务,此时登录时可用如下类似命令:

    mysql-uroot-p;

    mysql-uroot-pnewpassword;

    mysqlmydb-uroot-p;

    mysqlmydb-uroot-pnewpassword;

    上面命令参数是常用参数的一部分,详细情况可参考文档。此处的mydb是要登录的数据库的名称。

    在进行开发和实际应用中,用户不应该只用root用户进行连接数据库,虽然使用root用户进行测试时很方便,但会给系统带来重大安全隐患,也不利于管理技术的提高。我们给一个应用中使用的用户赋予最恰当的数据库权限。如一个只进行数据插入的用户不应赋予其删除数据的权限。MySql的用户管理是通过User表来实现的,添加新用户常用的方法有两个,一是在User表插入相应的数据行,同时设置相应的权限;二是通过GRANT命令创建具有某种权限的用户。其中GRANT的常用用法如下:

    grantallonmydb.*toNewUserName@HostNameidentifiedby"password";

    grantusageon*.*toNewUserName@HostNameidentifiedby"password";

    grantselect,insert,updateonmydb.*toNewUserName@HostNameidentifiedby"password";

    grantupdate,deleteonmydb.TestTabletoNewUserName@HostNameidentifiedby"password";

    若要给此用户赋予他在相应对象上的权限的管理能力,可在GRANT后面添加WITHGRANTOPTION选项。而对于用插入User表添加的用户,Password字段应用PASSWORD函数进行更新加密,以防不轨之人窃看密码。对于那些已经不用的用户应给予清除,权限过界的用户应及时回收权限,回收权限可以通过更新User表相应字段,也可以使用REVOKE操作。

    下面给出本人从其它资料获得的对常用权限的解释:

    全局管理权限:

    FILE:在MySQL服务器上读写文件。

    PROCESS:显示或杀死属于其它用户的服务线程。

    RELOAD:重载访问控制表,刷新日志等。

    SHUTDOWN:关闭MySQL服务。

    数据库/数据表/数据列权限:

    Alter:修改已存在的数据表(例如增加/删除列)和索引。

    Create:建立新的数据库或数据表。

    Delete:删除表的记录。

    Drop:删除数据表或数据库。

    INDEX:建立或删除索引。

    Insert:增加表的记录。

    Select:显示/搜索表的记录。

    Update:修改表中已存在的记录。

    特别的权限:

    ALL:允许做任何事(和root一样)。

    USAGE:只允许登录--其它什么也不允许做。

    最后给出本人在RedHat9.0下的MySql操作演示:

    选用数据库的root用户登录

    [weiwen@weiwenlinux]$mysql-uroot-p

    Enterpassword:MyPassword

    mysqlcreatedatabasemydb;

    QueryOK,1rowaffected(0.02sec)

    mysqlusemydb;

    Databasechanged

    mysqlcreatetableTestTable(Idintaut_incrementprimarykey,

    UserNamevarchar(16)notnull,

    Addressvarchar(255));

    QueryOK,0rowsaffected(0.02sec)

    mysqlgrantallonmydb.*totest@localhostidentifiedby"test";

    QueryOK,0rowsaffected(0.01sec)

    mysqlquit

    Bye

    [weiwen@weiwenlinux]$mysqlmydb-utest-ptest

    其中test.sql是用vi编辑好的SQL脚本,其内容为:

    InsertintoTestTable(UserName,Address)values('Tom','shanghai');

    InsertintoTestTable(UserName,Address)values('John','beijing');

    select*fromTestTable;

    运行已经编辑好的SQL脚本可以用sourcefilename或.filename。

    以上只是对新手的简单练习,要成为一个数据库好手,当以孜孜不倦地追求知识,不断地思考、尝试、再思考。

    。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

    MySql常用命令总结

    这两天搞个网站,又用到MySql,可是命令却一个都想不起来,所以,趁这次机会,把这些整理一下,权当作笔记吧,以便自己以后查阅!

    1:使用SHOW语句找出在服务器上当前存在什么数据库:

    mysqlSHOWDATABASES;

    2:2、创建一个数据库MYSQLDATA

    mysqlCreateDATABASEMYSQLDATA;

    3:选择你所创建的数据库

    mysqlUSEMYSQLDATA;(按回车键出现Databasechanged时说明操作成功!)

    4:查看现在的数据库中存在什么表

    mysqlSHOWTABLES;

    5:创建一个数据库表

    mysqlCreateTABLEMYTABLE(nameVARCHAR(20),sexCHAR(1));

    6:显示表的结构:

    mysqlDESCRIBEMYTABLE;

    7:往表中加入记录

    mysqlinsertintoMYTABLEvalues("hyq","M");

    8:用文本方式将数据装入数据库表中(例如D:/mysql.txt)

    mysqlLOADDATALOCALINFILE"D:/mysql.txt"INTOTABLEMYTABLE;

    9:导入.sql文件命令(例如D:/mysql.sql)

    mysqlusedatabase;

    mysqlsourced:/mysql.sql;

    10:删除表

    mysqldropTABLEMYTABLE;

    11:清空表

    mysqldeletefromMYTABLE;

    12:更新表中数据

    mysqlupdateMYTABLEsetsex="f"wherename='hyq';

    展开全文
  • 我们天天都在使用 Redis 内置的命令行工具 ...执行单条命令平时在访问 Redis 服务器,一般都会使用 redis-cli 进入交互模式,然后一问一答来读写服务器,这种情况下我们使用的它的「交互模式」。还有另外一种「直...

    我们天天都在使用 Redis 内置的命令行工具 redis-cli,久而久之以为它就是一个简单的交互式 Redis 数据结构手工操作程序,但是它背后强大的功能绝大多数同学可能闻所未闻。本节我们一起来挖掘这些鲜为人知的有趣用法。

    执行单条命令

    平时在访问 Redis 服务器,一般都会使用 redis-cli 进入交互模式,然后一问一答来读写服务器,这种情况下我们使用的是它的「交互模式」。还有另外一种「直接模式」,通过将命令参数直接传递给 redis-cli 来执行指令并获取输出结果。


    如果输出的内容较大,还可以将输出重定向到外部文件


    上面的命令指向的服务器是默认服务器地址,如果想指向特定的服务器可以这样

    批量执行命令

    在平时线上的开发过程中,有时候我们免不了要手工造数据,然后导入 Redis。通常我们会编写脚本程序来做这件事。不过还有另外一种比较便捷的方式,那就是直接使用 redis-cli 来批量执行一系列指令。


    上面的指令使用了 Unix 管道将 cat 指令的标准输出连接到 redis-cli 的标准输入。其实还可以直接使用输入重定向来批量执行指令。


    set 多行字符串

    如果一个字符串有多行,你希望将它传入 set 指令,redis-cli 要如何做?可以使用 -x 选项,该选项会使用标准输入的内容作为最后一个参数。


    重复执行指令

    redis-cli 还支持重复执行指令多次,每条指令执行之间设置一个间隔时间,如此便可以观察某条指令的输出内容随时间变化。


    如果将次数设置为 -1 那就是重复无数次永远执行下去。如果不提供 -i 参数,那就没有间隔,连续重复执行。在交互模式下也可以重复执行指令,形式上比较怪异,在指令前面增加次数


    导出 csv

    redis-cli 不能一次导出整个库的内容为 csv,但是可以导出单条指令的输出为 csv 格式。


    当然这种导出功能比较弱,仅仅是一堆字符串用逗号分割开来。不过你可以结合命令的批量执行来看看多个指令的导出效果。

    看到这里读者应该明白 --csv 参数的效果就是对输出做了一次转换,用逗号分割,仅此而已。

    执行 lua 脚本

    在 lua 脚本小节,我们使用 eval 指令来执行脚本字符串,每次都是将脚本内容压缩成单行字符串再调用 eval 指令,这非常繁琐,而且可读性很差。redis-cli 考虑到了这点,它可以直接执行脚本文件。


    下面我们以脚本的形式来执行上面的指令,参数形式有所不同,KEY 和 ARGV 之间需要使用逗号分割,并且不需要提供 KEY 的数量参数


    如果你的 lua 脚本太长,--eval 将大有用处。

    监控服务器状态

    我们可以使用 --stat 参数来实时监控服务器的状态,间隔 1s 实时输出一次。


    如果你觉得间隔太长或是太短,可以使用 -i 参数调整输出间隔。

    扫描大 KEY

    这个功能太实用了,我已经在线上试过无数次了。每次遇到 Redis 偶然卡顿问题,第一个想到的就是实例中是否存在大 KEY,大 KEY的内存扩容以及释放都会导致主线程卡顿。如果知道里面有没有大 KEY,可以自己写程序扫描,不过这太繁琐了。redis-cli 提供了 --bigkeys 参数可以很快扫出内存里的大 KEY,使用 -i 参数控制扫描间隔,避免扫描指令导致服务器的 ops 陡增报警。


    redis-cli 对于每一种对象类型都会记录长度最大的 KEY,对于每一种对象类型,刷新一次最高记录就会立即输出一次。它能保证输出长度为 Top1 的 KEY,但是 Top2、Top3等 KEY 是无法保证可以扫描出来的。一般的处理方法是多扫描几次,或者是消灭了 Top1 的 KEY 之后再扫描确认还有没有次大的 KEY。

    采样服务器指令

    现在线上有一台 Redis 服务器的 OPS 太高,有很多业务模块都在使用这个 Redis,如何才能判断出来是哪个业务导致了 OPS 异常的高。这时可以对线上服务器的指令进行采样,观察采样的指令大致就可以分析出 OPS 占比高的业务点。这时就要使用 monitor 指令,它会将服务器瞬间执行的指令全部显示出来。不过使用的时候要注意即使使用 ctrl+c 中断,否则你的显示器会噼里啪啦太多的指令瞬间让你眼花缭乱。


    诊断服务器时延

    平时我们诊断两台机器的时延一般是使用 Unix 的 ping 指令。Redis 也提供了时延诊断指令,不过它的原理不太一样,它是诊断当前机器和 Redis 服务器之间的指令(PING指令)时延,它不仅仅是物理网络的时延,还和当前的 Redis 主线程是否忙碌有关。如果你发现 Unix 的 ping 指令时延很小,而 Redis 的时延很大,那说明 Redis 服务器在执行指令时有微弱卡顿。


    时延单位是 ms。redis-cli 还能显示时延的分布情况,而且是图形化输出。

    $ redis-cli --latency-dist

    图片

    这个图形的含义作者没有描述,读者们可以尝试破解一下。

    远程 rdb 备份

    执行下面的命令就可以将远程的 Redis 实例备份到本地机器,远程服务器会执行一次bgsave操作,然后将 rdb 文件传输到客户端。远程 rdb 备份让我们有一种“秀才不出门,全知天下事”的感觉。


    模拟从库

    如果你想观察主从服务器之间都同步了那些数据,可以使用 redis-cli 模拟从库。


    从库连上主库的第一件事是全量同步,所以看到上面的指令卡顿这很正常,待首次全量同步完成后,就会输出增量的 aof 日志。


    获取阿里架构师精讲资料、精讲视频、Dubbo、Redis、设计模式、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术,可加入Java进阶之路:878249276。


    展开全文
  • golang 命令行cobra妙用

    2018-07-25 17:19:00
    web项目一般采用MVC模式,对于命令行有吗? 对于命令行则有command(命令)和flag(参数),golang自带了flag包,不过功能不够强大,这里我们使用第三方包cobra cobra 的使用 具体用法可以参考官方文档,我...

    为什么使用命令行

    大型项目中少不了数据升级,如果采用web服务,一来不够安全,二来数据量大的时候也会出超时的情况。这时使用命令行是比较合适的方式了。

    命令行中的MVC

    web项目一般采用MVC模式,对于命令行有吗?
    对于命令行则有command(命令)和flag(参数),golang自带了flag包,不过功能不够强大,这里我们使用第三方包cobra

    cobra 的使用

    具体用法可以参考官方文档,我就不细说了。

    妙用

    按照官方的结构,不好实现自动注册,每次增加新的命令或文件夹不好管理,需要改动代码。经过一番思考,发现可以利用golang的init机制来达到我的目的。
    目录结构如下:
    359523-20180725164818391-1643767678.png
    运行效果如图:
    359523-20180725171221554-254854069.png

    其中rootCmd.go 中初始化根命令rootCmd,同时封装两个函数,一个是添加子命令的,一个是执行的。

    package rootcmd
    
    import (
        "fmt"
        "github.com/spf13/cobra"
    )
    
    var rootCmd = &cobra.Command{
        Use: "cli",
        Run: func(cmd *cobra.Command, args []string) {
            fmt.Println("OK")
        },
    }
    //封装了两个函数
    func AddCommand(cmd *cobra.Command) {
        rootCmd.AddCommand(cmd)
    }
    
    func Execute() error {
        return rootCmd.Execute()
    }

    对于子命令,我可以导入rootcmd所在的包,然后在init函数里,调用rootcmd.AddCommand
    比如updateCmd.go

    package update
    
    import (
        "github.com/spf13/cobra"
        "fmt"
        "github.com/dwdcth/cli_sample/rootcmd"
    )
    
    // 注册命令
    func init() {
        rootcmd.AddCommand(userCmd)
    }
    
    var userCmd = &cobra.Command{
        Short: "user",
        Use:   "user ",
        Run: func(cmd *cobra.Command, args []string) {
            fmt.Println("run user update command")
        },
    }
    
    

    对于main包,使用"_",导入子命令文件夹,和rootcmd,并调用 rootcmd.Execute()即可。
    这样添加新的命令不增加新的package时,就不需要更改cli.go,实现了自动注册的目的。

    package main
    
    import (
        "fmt"
        "os"
        "github.com/dwdcth/cli_sample/rootcmd"
        _"github.com/dwdcth/cli_sample/task"
        _"github.com/dwdcth/cli_sample/update"
    )
    
    
    
    func main() {
    
        if err := rootcmd.Execute(); err != nil {
            fmt.Println(err)
            os.Exit(1)
        }
    }
    

    完整的代码在此

    展开全文
  • 命令行中的MVCweb项目一般采用MVC模式,对于命令行有吗? 对于命令行则有command(命令)和flag(参数),golang自带了flag包,不过功能不够强大,这里我们使用第三方包cobracobra 的使用具体用法可以参考官方文档,我就...

    为什么使用命令行

    大型项目中少不了数据升级,如果采用web服务,一来不够安全,二来数据量大的时候也会出超时的情况。这时使用命令行是比较合适的方式了。

    命令行中的MVC

    web项目一般采用MVC模式,对于命令行有吗? 对于命令行则有command(命令)和flag(参数),golang自带了flag包,不过功能不够强大,这里我们使用第三方包cobra

    cobra 的使用

    具体用法可以参考官方文档,我就不细说了。

    妙用

    按照官方的结构,不好实现自动注册,每次增加新的命令或文件夹不好管理,需要改动代码。经过一番思考,发现可以利用golang的init机制来达到我的目的。 目录结构如下:

    3c5af10cb8213d26c40c54dfecf04e44.png 运行效果如图:

    ede24490c9fa042b6df68512df0c3e14.png

    其中rootCmd.go 中初始化根命令rootCmd,同时封装两个函数,一个是添加子命令的,一个是执行的。

    package rootcmd

    import (

    "fmt"

    "github.com/spf13/cobra"

    )

    var rootCmd = &cobra.Command{

    Use: "cli",

    Run: func(cmd *cobra.Command, args []string) {

    fmt.Println("OK")

    },

    }

    //封装了两个函数

    func AddCommand(cmd *cobra.Command) {

    rootCmd.AddCommand(cmd)

    }

    func Execute() error {

    return rootCmd.Execute()

    }

    对于子命令,我可以导入rootcmd所在的包,然后在init函数里,调用rootcmd.AddCommand 比如updateCmd.go

    package update

    import (

    "github.com/spf13/cobra"

    "fmt"

    "github.com/dwdcth/cli_sample/rootcmd"

    )

    // 注册命令

    func init() {

    rootcmd.AddCommand(userCmd)

    }

    var userCmd = &cobra.Command{

    Short: "user",

    Use: "user ",

    Run: func(cmd *cobra.Command, args []string) {

    fmt.Println("run user update command")

    },

    }

    对于main包,使用"_",导入子命令文件夹,和rootcmd,并调用 rootcmd.Execute()即可。 这样添加新的命令不增加新的package时,就不需要更改cli.go,实现了自动注册的目的。

    package main

    import (

    "fmt"

    "os"

    "github.com/dwdcth/cli_sample/rootcmd"

    _"github.com/dwdcth/cli_sample/task"

    _"github.com/dwdcth/cli_sample/update"

    )

    func main() {

    if err := rootcmd.Execute(); err != nil {

    fmt.Println(err)

    os.Exit(1)

    }

    }

    完整的代码在此

    展开全文
  • 一般情况下,我们在使用php时,不需要配置环境变量的,只要在PHP.ini指定扩展的组件dll的ext路径和include环境路径即可。但是,如果需要使用到php的命令行模式,就需要配置环境变量。接下来,为大家介绍如何配置...
  • 如题,我有个功能在页面打开一个固定盘符的文件夹,在窗口模式能正常使用,但是tomcat用后台服务的形式却打不开这个目录,怎么回事?求高手指教!谢谢! 补充:后台服务运行就是以window服务的形式运行,这样...
  • 你必须知道的495个C语言问题

    千次下载 热门讨论 2015-05-08 11:09:25
    5.5 在使用非零位模式作为空指针的内部表示的机器上,NULL如何定义的? 5.6 如果NULL定义成#defineNULL((char*)0),不就可以向函数传入不加转换的NULL了吗? 5.7 我的编译器提供的头文件中定义的NULL为0L。为...
  • 接下来,在运行中输入“CMD”然后回车,打开命令行模式,在命令行下输入下列的两条命令,在每一行命令结束后回车: expand d:\iis51\iis.dl_ c:\Windows\system32\setup\iis2.dll expand d:\iis51\iis.in_ c:\...
  • B.I.5 主机提供商关于从命令行运行脚本和程序的政策什么 B.1.6 主机提供定时访问这种允许安排批量任务的Unix实用程序吗 B.2 和PHP相关的问题 B.2.1 能够在实际上被分配到的服务器中看到phpinfo的输出吗 B.2.2 PHP...
  • 5.5 在使用非零位模式作为空指针的内部表示的机器上,NULL 如何定义的? 56 5.6 如果NULL定义成#define NULL((char *)0) ,不就可以向函数传入不加转换的NULL 了吗? 57 5.7 我的编译器提供的头文件中定义的...
  • 先来说一个业务需求,比如一个购物商城app,有4个模块,做法一般是一个activity+4个fragment,这个大家都很熟悉,这四个模块分别:首页,发现,购物车,我的。然后这几个页面用fragment写的,共用一个宿主...
  • 《你必须知道的495个C语言问题》

    热门讨论 2010-03-20 16:41:18
    5.5 在使用非零位模式作为空指针的内部表示的机器上,NULL 如何定义的? 56 5.6 如果NULL定义成#define NULL((char *)0) ,不就可以向函数传入不加转换的NULL 了吗? 57 5.7 我的编译器提供的头文件中定义的...
  • 的 serialNumber 一般是无线连接的设备或 Genymotion 等第三方 Android 模拟器。 常见异常输出: 没有设备/模拟器连接成功。 List of devices attached 设备/模拟器未连接到 adb 或无响应。 List of devices ...
  • cFos7.4和cFos speed都同一家德国软件公司开发的,如果你内网用户,那么推荐你使用cFos speed,如果你和我一样ADSL虚拟拨号用户,那么cFos7.4才真正你不二的选择。 cFos和cFos speed二者有何区别?我摘录...
  • 糖果的软件

    2014-08-03 20:08:35
    一般能解决问题,就是太麻烦。 2 、进入安全模式下删除。还是太麻烦。 3 、选中该碎片,然后点击键盘上的“ delete ” 删除。 4 、选中该碎片,然后按住“ shift ”键再按 “ delete ” 删除。 5 、...
  • cFos speed

    2009-06-26 18:41:50
    这个总开关控制 Traffic Shaping 行为模式的最重要部分, 常用 P2P 的人, 开关朝上, 常用 Online-Game 的人, 开关朝下. cFos Speed,只是单纯的线路优化软件! cFos 则包含线路优化及拨接功能的软件,在位阶上...
  •  如果不带任何参数,diskpart 命令将启动 diskpart 的 Windows 字符模式版本。  /add  创建新的分区。  /delete  删除现有分区。  device_name  要创建或删除分区的设备。设备名称可从 map 命令的输出...
  • 在国内,有那么一群猪……噢不,我说大学教师……噢不不,我说项目经理……不不不……对不起,其实我想说“人”,对C/C++/Java/C#/……存有太多太多的误解(一般很愚蠢,以至于别人都不知道该怎么解释才好)。...
  • 在国内,有那么一群猪……噢不,我说大学教师……噢不不,我说项目经理……不不不……对不起,其实我想说“人”,对C/C++/Java/C#/……存有太多太多的误解(一般很愚蠢,以至于别人都不知道该怎么解释才好)。...
  • 在国内,有那么一群猪……噢不,我说大学教师……噢不不,我说项目经理……不不不……对不起,其实我想说“人”,对C/C++/Java/C#/……存有太多太多的误解(一般很愚蠢,以至于别人都不知道该怎么解释才好)。...
  • 在国内,有那么一群猪……噢不,我说大学教师……噢不不,我说项目经理……不不不……对不起,其实我想说“人”,对C/C++/Java/C#/……存有太多太多的误解(一般很愚蠢,以至于别人都不知道该怎么解释才好)。...
  • 使用WSDL.exe命令行工具。 2.使用VS.NET中的Add Web Reference菜单选项 23..net Remoting 的工作原理什么? 答:服务器端向客户端发送一个进程编号,一个程序域编号,以确定对象的位置。 24.在C#中,string ...
  • Oracle专家高级编程--详细书签版

    热门讨论 2012-08-21 11:57:09
    9.3.4 命令行取代控制文件 400 9.4 小结 400 第10章 优化策略与工具 401 10.1 标识问题 401 10.2 我的方法 402 10.3 绑定变量与分析 407 10.4 绑定变量与分析总结 423 10.5 SQL_TRACE、TIMED_STATISTICS与...
  • EditPlus.rar +GCC

    2012-02-17 23:12:16
    大家可以在命令行中转到minGW\bin文件夹下,运行“gcc --help”和“g++ --help”来查看命令行参数。也可以上网搜索一下。这方面的文章很多。  还可以使用附带的VC6编译器来编译,快捷键Alt+3。运行Alt+2。都...
  • Git权威指南PDF完整版

    千次下载 热门讨论 2012-12-25 17:53:55
    26.1 使用 git-svn 的一般流程/ 380 26.2 git-svn 的奥秘/ 386 26.2.1 Git 库配置文件的扩展及分支映射/ 387 26.2.2 Git工作分支和 Subversion 如何对应/ 388 26.2.3 其他辅助文件/ 390 26.3 多样的 git-svn 克隆...

空空如也

空空如也

1 2 3
收藏数 41
精华内容 16
关键字:

命令行模式是一般模式吗