MySQL使用手册.docx
《MySQL使用手册.docx》由会员分享,可在线阅读,更多相关《MySQL使用手册.docx(27页珍藏版)》请在冰豆网上搜索。
MySQL使用手册
MySQL使用手册
1第一部分MySQL的常用操作
1.1.1登陆MYSQL
登录MySQL的命令是mysql,mysql的使用语法如下:
mysql[-uusername][-hhost][-p[password]][dbname]
username与password分别是MySQL的用户名与密码,mysql的初始管理帐号是root,没有密码,注意:
这个root用户不是Linux的系统用户。
MySQL默认用户是root,由于初始没有密码,第一次进时只需键入mysql即可。
[root@test1local]#mysql
WelcometotheMySQLmonitor. Commandsendwith;or\g.
YourMySQLconnectionidis25338toserverversion:
5.1.2-alpha-standard
Type'help;'or'\h'forhelp.Type'\c'toclearthebuffer.
mysql>
出现了“mysql>”提示符。
增加了密码后的登录格式如下:
mysql-uroot-p
Enterpassword:
(输入密码)
其中-u后跟的是用户名,-p要求输入密码,回车后在输入密码处输入密码。
1.1.2显示数据库和数据库中的表
mysql>showdatabases;
+----------+
|Database|
+----------+
|mysql|
|test|
+----------+
2rowsinset(0.04sec)
Mysql刚安装完有两个数据库:
mysql和test。
mysql库非常重要,它里面有MySQL的系统信息,我们改密码和新增用户,实际上就是用这个库中的相关表进行操作。
mysql>usemysql;(打开库,对每个库进行操作就要打开此库,类似于foxpro)
Databasechanged
mysql>showtables;
+-----------------+
|Tables_in_mysql|
+-----------------+
|columns_priv|
|db|
|func|
|host|
|tables_priv|
|user|
+-----------------+
6rowsinset(0.01sec)
注意:
MySQL中每个命令后都要以分号;结尾。
1.1.3显示数据表的结构
describe表名;
1.1.4显示表中的记录
select*from表名;
例如:
显示mysql库中user表中的纪录。
所有能对MySQL用户操作的用户都在此表中。
Select*fromuser;
1.1.5建库
createdatabase库名;
例如:
创建一个名字位aaa的库
mysql>createdatabaseaaa;
1.1.6建表
use库名;
createtable表名(字段设定列表);
例如:
在刚创建的aaa库中建立表name,表中有id(序号,自动增长),xm(姓名),xb(性别),csny(出身年月)四个字段
useaaa;
mysql>createtablename(idint(3)auto_incrementnotnullprimarykey,xmchar(8),xbchar
(2),csnydate);
可以用describe命令察看刚建立的表结构。
mysql>describename;
+-------+---------+------+-----+---------+----------------+
|Field|Type|Null|Key|Default|Extra|
+-------+---------+------+-----+---------+----------------+
|id|int(3)||PRI|NULL|auto_increment|
|xm|char(8)|YES||NULL||
|xb|char
(2)|YES||NULL||
|csny|date|YES||NULL||
+-------+---------+------+-----+---------+----------------+
1.1.7增加记录
1.1.7.1例如:
增加几条相关纪录
mysql>insertintonamevalues('','张三','男','1971-10-01');
mysql>insertintonamevalues('','白云','女','1972-05-20');
可用select命令来验证结果。
mysql>select*fromname;
+----+------+------+------------+
|id|xm|xb|csny|
+----+------+------+------------+
|1|张三|男|1971-10-01|
|2|白云|女|1972-05-20|
+----+------+------+------------+
1.1.8将数据装入表中
创建表后,需要填入内容。
通过LOADDATA和INSERT语句可以完成该任务。
假定你的宠物纪录描述如下。
(假定在MySQL中期望的日期格式是YYYY-MM-DD;这可能与你习惯的不同。
)
name
owner
species
sex
Birth
death
Fluffy
Harold
Cat
F
1993-02-04
Claws
Gwen
Cat
M
1994-03-17
Buffy
Harold
dog
F
1989-05-13
Fang
Benny
dog
M
1990-08-27
Bowser
Diane
dog
M
1979-08-31
1995-07-29
Chirpy
Gwen
bird
F
1998-09-11
Whistler
Gwen
bird
1997-12-09
Slim
Benny
snake
M
1996-04-29
因为你是从一个空表开始的,填充它的一个简易方法是创建一个文本文件,每个动物各一行,然后用一个语句将文件的内容装载到表中。
你可以创建一个文本文件“pet.txt”,每行包含一个记录,用定位符(tab)把值分开,并且以CREATETABLE语句中列出的列次序给出。
对于丢失的值(例如未知的性别,或仍然活着的动物的死亡日期),你可以使用NULL值。
为了在你的文本文件中表示这些内容,使用\N(反斜线,字母N)。
例如,Whistler鸟的记录应为(这里值之间的空白是一个定位符):
name
owner
species
sex
birth
death
Whistler
Gwen
Bird
\N
1997-12-09
\N
想将文本文件“pet.txt”装载到pet表中,使用这个命令:
mysql>LOADDATALOCALINFILE'/path/pet.txt'INTOTABLEpet;
请注意如果用Windows中的编辑器(使用\r\n做为行的结束符)创建文件,应使用:
mysql>LOADDATALOCALINFILE'/path/pet.txt'INTOTABLEpet
->LINESTERMINATEDBY'\r\n';(在运行OSX的Apple机上,应使用行结束符'\r'。
)如果你愿意,你能明确地在LOADDATA语句中指出列值的分隔符和行尾标记,但是默认标记是定位符和换行符。
这对读入文件“pet.txt”的语句已经足够。
如果该语句失败,可能是你安装的MySQL不与使用默认值的本地文件兼容。
(关于如何更改请参见MYSQL中文使用手册5.6.4节,“LOADDATALOCAL安全问题”。
)
1.1.9修改纪录
例如:
将张三的出生年月改为1971-01-10
mysql>updatenamesetcsny='1971-01-10'wherexm='张三';
1.1.10删除纪录
例如:
删除张三的纪录。
mysql>deletefromnamewherexm='张三';
1.1.11删库和删表
dropdatabase库名;
droptable表名;
1.1.12增加MySQL用户
使用GRANT
GRANT命令用来建立新用户,指定用户口令并增加用户权限。
其格式如下:
mysql>GRANTON
->TO[IDENTIFIEDBY""]
->[WITHGRANTOPTION];
正如你看到的,在这个命令中有许多待填的内容。
让我们逐一地对它们进行介绍,并最终给出一些例子以让你对它们的协同工作有一个了解。
是一个用逗号分隔的你想要赋予的权限的列表。
你可以指定的权限可以分为三种类型:
数据库/数据表/数据列权限:
ALTER:
修改已存在的数据表(例如增加/删除列)和索引。
CREATE:
建立新的数据库或数据表。
DELETE:
删除表的记录。
DROP:
删除数据表或数据库。
INDEX:
建立或删除索引。
INSERT:
增加表的记录。
SELECT:
显示/搜索表的记录。
UPDATE:
修改表中已存在的记录。
全局管理权限:
FILE:
在MySQL服务器上读写文件。
PROCESS:
显示或杀死属于其它用户的服务线程。
RELOAD:
重载访问控制表,刷新日志等。
SHUTDOWN:
关闭MySQL服务。
特别的权限:
ALL:
允许做任何事(和root一样)。
USAGE:
只允许登录--其它什么也不允许做。
这些权限所涉及到的MySQL的特征,其中的一些我们至今还没看到,而其中的绝大部分是你所熟悉的。
定义了这些权限所作用的区域。
*.*意味着权限对所有数据库和数据表有效。
dbName.*意味着对名为dbName的数据库中的所有数据表有效。
dbName.tblName意味着仅对名为dbName中的名为tblName的数据表有效。
你甚至还可以通过在赋予的权限后面使用圆括号中的数据列的列表以指定权限仅对这些列有效(在后面我们将看到这样的例子)。
指定可以应用这些权限的用户。
在MySQL中,一个用户通过它登录的用户名和用户使用的计算机的主机名/IP地址来指定。
这两个值都可以使用%通配符(例如kevin@%将允许使用用户名kevin从任何机器上登录以享有你指定的权限)。
指定了用户连接MySQL服务所用的口令。
它被用方括号括起,说明IDENTIFIEDBY""在GRANT命令中是可选项。
这里指定的口令会取代用户原来的密码。
如果没有为一个新用户指定口令,当他进行连接时就不需要口令。
这个命令中可选的WITHGRANTOPTION部分指定了用户可以使用GRANT/REVOKE命令将他拥有的权限赋予其他用户。
请小心使用这项功能--虽然这个问题可能不是那么明显!
例如,两个都拥有这个功能的用户可能会相互共享他们的权限,这也许不是你当初想看到的。
让我们来看两个例子。
建立一个名为dbmanager的用户,他可以使用口令managedb从连接MySQL,并仅仅可以访问名为db的数据库的全部内容(并可以将此权限赋予其他用户),这可以使用下面的GRANT命令:
mysql>GRANTALLONdb.*
->TOdbmanager@
->IDENTIFIEDBY"managedb"
->WITHGRANTOPTION;
现在改变这个用户的口令为funkychicken,命令格式如下:
mysql>GRANTUSAGEON*.*
->TOdbmanager@
->IDENTIFIEDBY"funkychicken";
请注意我们没有赋予任何另外的权限(theUSAGE权限只能允许用户登录),但是用户已经存在的权限不会被改变。
现在让我们建立一个新的名为jessica的用户,他可以从域的任意机器连接到MySQL。
他可以更新数据库中用户的姓名和email地址,但是不需要查阅其它数据库的信息。
也就是说他对db数据库具有只读的权限(例如,SELECT),但是他可以对Users表的name列和email列执行UPDATE操作。
命令如下:
mysql>GRANTSELECTONdb.*
->TOjessica@%
->IDENTIFIEDBY"jessrules";
mysql>GRANTUPDATE(name,email)ONdb.Users
->TOjessica@%;
请注意在第一个命令中我们在指定Jessica可以用来连接的主机名时使用了%(通配符)符号。
此外,我们也没有给他向其他用户传递他的权限的能力,因为我们在命令的最后没有带上WITHGRANTOPTION。
第二个命令示范了如何通过在赋予的权限后面的圆括号中用逗号分隔的列的列表对特定的数据列赋予权限。
使用REVOKE
正如你所预期的那样,REVOKE命令是用来去除一个用户以前被赋予的权限的。
命令的语法如下:
mysql>REVOKE[()]
->ONFROM;
这个命令中各部分的功能和在上面的GRANT命令中时一样。
要去除Jessica的合作者的DROP权限(例如,如果他经常错误地删除数据库和表),你可以使用下面的命令:
mysql>REVOKEDROPON*.*FROMidiot@%;
去除一个用户的登录权限大概是唯一不能使用REVOKE的。
REVOKEALLON*.*会去除用户的所有权限,但是他还可以登录,要完全地删除一个用户,你需要在user表中删除相应的记录:
mysql>DELETEFROMuser
->WHEREUser="idiot"ANDHost="%";
用新增的用户如果登录不了MySQL,在登录时用如下命令:
mysql-uuser_1-p-h192.168.113.50(-h后跟的是要登录主机的ip地址)
1.1.13备份与恢复
1.1.13.1备份
备份单个据库时mysqldump–uroot–p--databasesabc>/abc.sql
Enterpassword:
(输入密码)
备份多个据库时mysqldump–uroot–p--databasesabc,aaa>/abc.sql
Enterpassword:
(输入密码)
备份全部据库时时,命令为mysqldump–uroot--all-databases>/backup.sql
Enterpassword:
(输入密码)
最稳妥的MYISAM数据库的备份方法。
在默认的情况下,mysqldump程序会在备份每一个数据表之前给它加个读操作锁以防止它在备份过程中发生变化,但这并不能防止数据表B在mysqldump程序备份数据表A的时候被修改。
这就有可能导致一种后果:
数据表A引用了数据表B里的某条记录,但这条记录却在mysqldump程序备份数据表B之前被删除了。
解决这个问题的办法是用上
--lock-all-tables选项:
>mysqldump–uroot–p–lock-all-tablesdatabasename>/back.sql
1.1.13.2恢复
恢复多个数据库时时,命令为mysql–uroot–pEnterpassword:
(输入密码)
恢复单个数据库时时,命令为mysql–uroot–pdatabasenameEnterpassword:
(输入密码)
1.1.13.3计划备份
采用linux计划工具crontab
Crontab–e
按“i”键开始编写计划。
*/1****mysqldump–uroot–p--databasesdbname1dabname2….>/mysqlback/my_back.sql
注意:
计划工具crontab的使用在《NeoshineLinuxServerandSybase的安装.doc》有较详细介绍。
1.1.13.4存储过程的备份与恢复
>mysqldump–uroot–p“--where=db=’dbname’”--no-create-info\
Mysqlproc>back.sql(“\”分两行写了,是一条命令)
在下面的例子里,db是proc数据表用来存放数据库名字的数据列,而--no-create-info选项的作用是让mysql在为proc数据表制作备份时不生成createtable命令,这样在恢复备份时就不会破坏proc数据表里属于其他数据库的存储过程了。
这里还有一个细节问题需要注意:
在使用back.sql文件去恢复备份之前,必须要不proc数据表里属于dbname的现有SP全部删掉---------如果不这样做,当备份文件里的SP试图覆盖数据表里的现有SP时就将触发一个错误。
Deletefrommysql.procwheredb=’dbname’
注释dbname为数据库名。
恢复时命令是一样的
Mysql–uroot–pmysql1.1.13.5具体操作
操作简单并且快捷的备份和恢复方法,也可以用SQLyog去实现,它的备份和恢复功能已经很完备(建议使用这种方法备份和恢复)。
首先将备份的数据库备份成xxx.sql文件,然后在将这个文件倒入到你想要恢复的数据库。
(在倒入前,先要建立一个要空的数据库,用来将备份的数据库文件倒入。
)具体的操作可以参考第二部分MYSQL图形使用工具。
启动SQLyog首先连接要备份的数据库的服务器,然后右键点击要备份的数据库如下界面,然后选中exportdatabasesassqlstatement左键单击,
弹出另一个界面如下:
在Exporttofile输入要备份文件的地址,或点击后面的按纽指定位置。
然后点击Export,便执行将数据库备份到SQL文件。
当Exportsuccessful,关闭该界面。
恢复时,同样用SQLyog连接到要恢复的数据库的服务器,然后建立好一个空的数据库,用来做恢复刚才备份SQL文件数据库。
然后同样右键点击要恢复的数据库
如下图所示:
点击ImportBatchFile
在弹出的窗口中,点按纽指定刚才备份的SQL文件。
点击Execute按纽。
便进行了恢复数据库的操作。
待执行完毕后,备份恢复的工作就完成了。
2第二部分MYSQL图形使用工具
SQLyog是一款运行速度极快,体积小且易用的管理MySQL服务器的图形化工具.现在可以下载SQLyog5版本的,下载下来并进行安装,然后就可以使用了。
启动SQLyog5
点击New,然后输入新建连接的名字(有意义的标识名称)。
然后点击OK进入下个界面。
在MySQLHostAddress内输入要连mysql服务器的IP地址
UserName内输入root
Password内输入进入mysql需要的密码,没有密码就为空。
Port端口地址为3306
DefaultCharset为utf8
Database(s)添入你想连接的数据库名多个数据库用”;”分隔,保持这栏为空将显示所有数据库。
点击连接,并确认保存添入的信息进入SQLyog。
如图所示:
左面是对象浏览器,显示数据库的信息,右面上部分为SQL编辑器,下部分是结果面板。
显示操作的结果,信息,表中的数据,对象,历史记录。
点击file菜单界面如下:
操作依次为:
新建当前设置连接,新建一个连接,新建一个查询标签页,断开当前连接,断开全部连接,打开一个SQL文件,保存当前的SQL文件,另存当前的SQL文件,最近打开的文件,退出。
点击Edit时出现如下界面:
操作有依次有:
执行查询(执行当前查询,执行选定查询,执行全部查询,执行并编辑结果集),撤消,重做,剪切,复制,粘贴,全选,清除,查找,替换,转到,刷新对象浏览器,插入模板,以文本形式显示结果,隐藏对象浏览器,隐藏结果面板,隐藏SQL编辑器,高级选项(使选择内容大写,使选择内容小写,注释选择内容,从选择内容删除注释)
点击喜爱菜单,下面有添加到收藏夹,编辑收藏夹,刷新收藏夹。
通过它可以将SQL保存起来,然后方便以后调用它。
点击DB菜单界面如下:
依次有创建数据库,创建表,创建视图,创建存储过程,倒出数据库为SQL文件,从SQL文件倒入,删除数据库,删除数据库中的数据(删除表中的信息),清空数据库(删除数据库中的所有表,函数,存储过程)。
创建HTML格式架构,
点击Table菜单如下图所示:
操作依次有粘贴SQL语句查询表和插入表(当在对象浏览器上选中了一个表时,调用该菜单的操作,会将它的查询或是插入SQL语句写入SQL编辑器),复制表到不同的主机或数据库(同过它可以将表的结构和数据,以及处发起器等复制到不同的数据库上),创建表,修改表结构,管理索引,关联和外键,创建处发器,向表中插入数据(插入后点击保存,数据就写入表中了),倒入倒出(数据表倒出为SQL语句,倒出数据表为CSV,XML,HML格式文件,从CSV中倒入数据到表中),复制表结构和数据(将表的结构和数据备份到同数据库下的另一个表名)
,重命名表明,清空表,丢弃表,从排字段,将表的类型更改为(可以将表的类型进行转换,格式有B