mysql的一些实用命令.docx

上传人:b****7 文档编号:9810820 上传时间:2023-02-06 格式:DOCX 页数:18 大小:25.73KB
下载 相关 举报
mysql的一些实用命令.docx_第1页
第1页 / 共18页
mysql的一些实用命令.docx_第2页
第2页 / 共18页
mysql的一些实用命令.docx_第3页
第3页 / 共18页
mysql的一些实用命令.docx_第4页
第4页 / 共18页
mysql的一些实用命令.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

mysql的一些实用命令.docx

《mysql的一些实用命令.docx》由会员分享,可在线阅读,更多相关《mysql的一些实用命令.docx(18页珍藏版)》请在冰豆网上搜索。

mysql的一些实用命令.docx

mysql的一些实用命令

1、连接Mysql

1、连接到本机上的MYSQL。

首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql-uroot-p,

回车后提示你输密码.注意用户名前可以有空格也可以没有空格,但是密码前必须没有空格,否则让你重新输入密码。

如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,

MYSQL的提示符是:

mysql>

2、连接到远程主机上的MYSQL。

假设远程主机的IP为:

110.110.110.110,用户名为root,密码为abcd123。

则键入以下命令:

   mysql-h110.110.110.110-uroot-p123;(注:

u与root之间可以不用加空格)

3、退出MYSQL命令:

exit(回车)

2、修改密码

1、给root加个密码ab12。

首先在DOS下进入目录mysql\bin,然后键入以下命令

   mysqladmin-uroot–ppasswordab12

mysqladmin–u用户名–p旧密码新密码

注:

因为开始时root没有密码,所以-p旧密码一项就可以省略了。

2、再将root的密码改为djg345。

   mysqladmin-uroot-pab12passworddjg345

3、为匿名帐号指定密码

(1)使用PASSWORD的方法

a.windows:

shell>mysql-uroot

mysql>SETPASSWORDFOR''@'localhost'=PASSWORD('newpwd');

mysql>SETPASSWORDFOR''@'%'=PASSWORD('newpwd');

b.unix:

shell>mysql-uroot

mysql>SETPASSWORDFOR''@'localhost'=PASSWORD('newpwd');

mysql>SETPASSWORDFOR''@'host_name'=PASSWORD('newpwd');

如果你不知道是哪个主机名,在SETPASSWORD之前执行下面的语句:

mysql>SELECTHost,UserFROMmysql.user;

(2)UPDATE直接修改用户表

用root连接服务器,运行UPDATE语句为相应user表记录的Password列指定一个值。

在Windows和Unix中的过程是相同的。

下面的UPDATE语句同时为两个匿名账户指定密码:

shell>mysql-uroot

mysql>UPDATEmysql.userSETPassword=PASSWORD('newpwd')WHEREUser='';

mysql>FLUSHPRIVILEGES;

在user表中直接使用UPDATE更新密码后,必须让服务器用FLUSHPRIVILEGES重新读授权表。

否则,重新启动服务器前,不会使用更改。

4、删除匿名帐户

shell>mysql-uroot

mysql>DELETEFROMmysql.userWHEREUser='';

mysql>FLUSHPRIVILEGES;

可以在Windows和Unix中使用DELETE语句。

在Windows中,如果你只想删掉具有与root相同权限的匿名账户,方法为:

shell>mysql-uroot

mysql>DELETEFROMmysql.userWHEREHost='localhost'ANDUser='';

mysql>FLUSHPRIVILEGES;

该账户允许匿名访问,但是拥有全部的权限,因此删掉它可以提高安全。

5、为root帐户指定密码

(1)使用SETPASSWORD语句

用root连接服务器并执行两个SETPASSWORD语句。

一定要使用PASSWORD()函数来加密密码。

在Windows中的语句:

shell>mysql-uroot

mysql>SETPASSWORDFOR'root'@'localhost'=PASSWORD('newpwd');

mysql>SETPASSWORDFOR'root'@'%'=PASSWORD('newpwd');

在Unix中的语句:

shell>mysql-uroot

mysql>SETPASSWORDFOR'root'@'localhost'=PASSWORD('newpwd');

mysql>SETPASSWORDFOR'root'@'host_name'=PASSWORD('newpwd');

用服务器主机名替换第二个SETPASSWORD语句中的host_name。

这是你指定匿名账户密码的主机名。

(2)使用mysqladmin命令行客户端程序

shell>mysqladmin-urootpassword"newpwd"

shell>mysqladmin-uroot-hhost_namepassword"newpwd"

上述命令适用于Windows和Unix。

用服务器主机名替换第二个命令中的host_name。

不一定需要将密码用双引号引起来,但是你如果密码中包含空格或专用于命令解释的其它字符,则需要用双引号引起来。

(3)使用UPDATE语句

直接修改user表。

同时为两个root账户指定密码:

shell>mysql-uroot

mysql>UPDATEmysql.userSETPassword=PASSWORD('newpwd')WHEREUser='root';

mysql>FLUSHPRIVILEGES;

UPDATE语句适用于Windows和Unix。

设置完密码后,当你连接服务器时你必须提供相应密码。

例如,如果你想要用mysqladmin关闭服务器,可以使用下面的命令:

shell>mysqladmin-uroot-pshutdown

Enterpassword:

(enterrootpasswordhere)

3、增加新用户

1、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。

首先用root用户连入MYSQL,然后键入以下命令:

  grantselect,insert,update,deleteon*.*to[email=test1@”%]test1@”%[/email]”Identifiedby“abc”;

但增加的用户是十分危险的,你想如某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了,解决办法见2。

2、增加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),这样用户即使用知道test2的密码,他也无法从internet上直接访问数据库,只能通过MYSQL主机上的web页来访问了。

   grantselect,insert,update,deleteonmydb.*to[email=test2@localhost]test2@localhost[/email]identifiedby“abc”;

如果你不想test2有密码,可以再打一个命令将密码消掉。

   grantselect,insert,update,deleteonmydb.*to[email=test2@localhost]test2@localhost[/email]identifiedby“”;

可以用两种方式创建MySQL账户:

(1)使用GRANT语句

(2)直接操作MySQL授权表

最好的方法是使用GRANT语句,因为这样更精确,错误少

为了更改,你必须以MySQLroot用户连接MySQL服务器,

并且root账户必须有mysql数据库的INSERT权限和RELOAD管理权限。

首先,使用MySQL程序以MySQLroot用户来连接服务器:

shell>mysql–uroot-p密码

如果你为root账户指定了密码,还需要为该MySQL命令和本节中的其它命令提供--password或-p选项。

以root连接到服务器上后,可以添加新账户。

下面的语句使用GRANT来设置四个新账户:

mysql>GRANTALLPRIVILEGESON*.*TO'monty'@'localhost'IDENTIFIEDBY'some_pass'WITHGRANTOPTION;

mysql>grantallprivilegeson*.*to‘monty’@’localhost’identifiedby‘some_pass’withgrantoption;

mysql>GRANTALLPRIVILEGESON*.*TO'monty'@'%'IDENTIFIEDBY'some_pass'WITHGRANTOPTION;

mysql>grantallprivilegeson*.*to‘monty’@’%’identifiedby‘some_pass’withgrantoption;

mysql>GRANTRELOAD,PROCESSON*.*TO'admin'@'localhost';

mysql>grantreload,processon*.*to‘admin’@’localhost’;

mysql>GRANTUSAGEON*.*TO'dummy'@'localhost';

mysql>grantusageon*.*to‘dummy’@’localhost’;

用GRANT语句创建的账户有下面的属性:

·其中两个账户有相同的用户名monty和密码some_pass。

两个账户均为超级用户账户,具有完全的权限可以做任何事情。

一个账户('monty'@'localhost')只用于从本机连接时。

另一个账户('monty'@'%')可用于从其它主机连接。

请注意monty的两个账户必须能从任何主机以monty连接。

没有localhost账户,当monty从本机连接时,mysql_install_db创建的localhost的匿名用户账户将占先。

结果是,monty将被视为匿名用户。

原因是匿名用户账户的Host列值比'monty'@'%'账户更具体,这样在user表排序顺序中排在前面。

·一个账户有用户名admin,没有密码。

该账户只用于从本机连接。

授予了RELOAD和PROCESS管理权限。

这些权限允许admin用户执行mysqladminreload、mysqladminrefresh和mysqladminflush-xxx命令,以及mysqladminprocesslist。

未授予访问数据库的权限。

你可以通过GRANT语句添加此类权限。

·一个账户有用户名dummy,没有密码。

该账户只用于从本机连接。

未授予权限。

通过GRANT语句中的USAGE权限,你可以创建账户而不授予任何权限。

它可以将所有全局权限设为'N'。

假定你将在以后将具体权限授予该账户。

除了GRANT,你可以直接用INSERT语句创建相同的账户,然后使用FLUSHPRIVILEGES告诉服务器重载授权表:

shell>mysql--user=rootmysql

mysql>INSERTINTOuserVALUES('localhost','monty',PASSWORD('some_pass'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');

mysql>INSERTINTOuserVALUES('%','monty',PASSWORD('some_pass'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');

mysql>INSERTINTOuserSETHost='localhost',User='admin',Reload_priv='Y',Process_priv='Y';

mysql>INSERTINTOuser(Host,User,Password)VALUES('localhost','dummy','');

mysql>FLUSHPRIVILEGES;

当你用INSERT创建账户时使用FLUSHPRIVILEGES的原因是告诉服务器重读授权表。

否则,只有重启服务器后更改方会被注意到。

使用GRANT,则不需要使用FLUSHPRIVILEGES。

用INSERT使用PASSWORD()函数是为了加密密码。

GRANT语句为你加密密码,因此不需要PASSWORD()。

'Y'值启用账户权限。

对于admin账户,还可以使用更加可读的INSERT扩充的语法(使用SET)。

在为dummy账户的INSERT语句中,只有user表中的Host、User和Password列记录为指定的值。

没有一个权限列为显式设置,因此MySQL将它们均指定为默认值'N'。

这样等同于GRANTUSAGE的操作。

请注意要设置超级用户账户,只需要创建一个权限列设置为'Y'的user表条目。

user表权限为全局权限,因此其它授权表不再需要条目。

下面的例子创建3个账户,允许它们访问专用数据库。

每个账户的用户名为custom,密码为obscure。

要想用GRANT创建账户,使用下面的语句:

shell>MySQL--user=rootMySQL

shell>mysql--user=rootmysql

mysql>GRANTSELECT,INSERT,UPDATE,DELETE,CREATE,DROPONbankaccount.*TO'custom'@'localhost'IDENTIFIEDBY'obscure';

mysql>GRANTSELECT,INSERT,UPDATE,DELETE,CREATE,DROPONexpenses.*TO'custom'@'whitehouse.gov'IDENTIFIEDBY'obscure';

mysql>GRANTSELECT,INSERT,UPDATE,DELETE,CREATE,DROPONcustomer.*TO'custom'@'server.domain'IDENTIFIEDBY'obscure';

这3个账户可以用于:

·第1个账户可以访问bankaccount数据库,但只能从本机访问。

·第2个账户可以访问expenses数据库,但只能从主机whitehouse.gov访问。

·第3个账户可以访问customer数据库,但只能从主机server.domain访问。

格式:

grantselecton数据库.*to用户名@登录主机identifiedby“密码”

4.1创建数据库

命令:

createdatabase<数据库名>

例1:

建立一个名为xhkdb的数据库

  mysql>createdatabasexhkdb;

例2:

创建数据库并分配用户

①CREATEDATABASE数据库名;

②GRANTSELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTERON数据库名.*TO数据库名@localhostIDENTIFIEDBY'密码';

③SETPASSWORDFOR '数据库名'@'localhost'=OLD_PASSWORD('密码');

依次执行3个命令完成数据库创建。

注意:

中文“密码”和“数据库”是户自己需要设置的。

4.2显示数据库

命令:

showdatabases(注意:

最后有个s)

mysql>showdatabases;

注意:

为了不再显示的时候乱码,要修改数据库默认编码。

以下以GBK编码页面为例进行说明:

1、修改MYSQL的配置文件:

my.ini里面修改default-character-set=gbk

2、代码运行时修改:

  ①Java代码:

jdbc:

mysql:

//localhost:

3306/test?

useUnicode=true&characterEncoding=gbk

  ②PHP代码:

header("Content-Type:

text/html;charset=gb2312");

  ③C语言代码:

intmysql_set_character_set(MYSQL*mysql,char*csname);

该函数用于为当前连接设置默认的字符集。

字符串csname指定了1个有效的字符集名称。

连接校对成为字符集的默认校对。

该函数的工作方式与SETNAMES语句类似,但它还能设置mysql->charset的值,从而影响了由mysql_real_escape_string()设置的字符集。

4.3删除数据库

命令:

dropdatabase<数据库名>

例如:

删除名为xhkdb的数据库

mysql>dropdatabasexhkdb;

例子:

删除一个不确定存在的数据库

  mysql>dropdatabasedrop_database;

  ERROR1008(HY000):

Can'tdropdatabase'drop_database';databasedoesn'texist

   //发生错误,不能删除'drop_database'数据库,该数据库不存在。

 mysql>dropdatabaseifexistsdrop_database;//ifexists判断数据库是否存在,不存在也不产生错误

4.4连接数据库

命令:

use<数据库名>

例如:

如果xhkdb数据库存在,尝试存取它:

  mysql>usexhkdb;

屏幕提示:

Databasechanged

use语句可以通告MySQL把db_name数据库作为默认(当前)数据库使用,用于后续语句。

该数据库保持为默认数据库,直到语段的结尾,或者直到发布一个不同的USE语句:

  mysql>USEdb1;

  mysql>SELECTCOUNT(*)FROMmytable;  #selectsfromdb1.mytable

  mysql>USEdb2;

  mysql>SELECTCOUNT(*)FROMmytable;  #selectsfromdb2.mytable

使用USE语句为一个特定的当前的数据库做标记,不会阻碍您访问其它数据库中的表。

下面的例子可以从db1数据库访问作者表,并从db2数据库访问编辑表:

  mysql>USEdb1;

  mysql>SELECTauthor_name,editor_nameFROMauthor,db2.editor

    ->       WHEREauthor.editor_id=db2.editor.editor_id;

USE语句被设立出来,用于与Sybase相兼容。

use数据库后,使用showdatabases就能查询所有数据库,如果想跳到其他数据库,用 use其他数据库名字就可以了。

4.5当前选择的数据库

命令:

mysql>selectdatabase();

MySQL中SELECT命令类似于其他编程语言里的print或者write,

你可以用它来显示一个字符串、数字、数学表达式的结果等等。

如何使用MySQL中SELECT命令的特殊功能?

1.显示MYSQL的版本

mysql>selectversion(); 

2.显示当前时间

mysql>selectnow(); 

3.显示年月日

(1)SELECTDAYOFMONTH(CURRENT_DATE); 

(2)SELECTMONTH(CURRENT_DATE); 

(3)SELECTYEAR(CURRENT_DATE); 

4.查询当前用户:

selectuser();/SELECTCURRENT_USER();

5.查询数据库版本:

selectversion();

6.查询当前使用的数据库:

selectdatabase();

7.显示字符串

mysql>SELECT"welecometomyblog!

"; 

5.当计算器用

select((4*4)/10)+25; 

6.串接字符串

注意:

这里用到CONCAT()函数,用来把字符串串接起来。

另外,我们还用到以前学到的AS给结果列'CONCAT(f_name,"",l_name)'起了个假名。

5.1创建数据表

命令:

createtable<表名>(<字段名1><类型1>[,..<字段名n><类型n>]);

例如,建立一个名为MyClass的表,

字段名

数字类型

数据宽度

是否为空

是否主键

自动增加

默认值

id

int

4

primarykey

auto_increment

name

char

20

sex

int

4

0

degree

double

16

mysql>createtableMyClass(

>idint(4)notnullprimarykeyauto_increment,

>namechar(20)notnull,

>sexint(4)notnulldefault'0',

>degreedouble(16,2));

5.2获取表结构

命令:

desc表名,或者showcolumnsfrom表名

mysql>descMyClass;

mysql>showcolumnsfromMyClass;

使用MySQL数据库desc表名时,我们看到Key那一栏,可能会有4种值,即'','PRI','UNI','MUL'。

1.如果Key是空的,那么该列值的可以重复,表示该列没有索引,或者是一个非唯一的复合索引的非前导列;

2.如果Key是PRI, 那么该列是主键的组成部分;

3.如果Key是UNI, 那么该列是一个唯一值索引的第一列(前导列),并别不能含有空值(NULL);

4.如果Key是MUL, 那么该列的值可以重复,该列是一

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1