Mysql命令详解
Mysql的所有命令都可以通过在线文档或者是通过help command方式来获得帮助。
以下说一些工作中经常用到的mysql操作命令。
[mysql数据库]
[descibe]语句:用来显示表的结构,即组成表的各字段(列)的信息.需要指定"库名.表名"作为参数
mysql >use mysql; mysql >descibe user;
[create创建]
使用create创建用户
mysql >create user ‘wangwu‘@‘192.168.1.%‘ identified by ‘123456‘;【创建用户王五,并限制到192.168.1.0网段】 mysql >create database xianshang character set utf8 collate utf8_bin;【创建数据库,设置编码格式,设置排序规则】
create table [表名] (字段1 名称 type,字段2 名称 type,.....,primary key (主健名))
[例如]
创建users表,表中包含字段信息为username不超过16字节的字符串,userpassword不超过48字节的字符串,default用户设置默认的密码字符串为空,主健为username必须是唯一的.
mysql >use auth; mysql >create talbe users (username char(16) not null,userpassword char(48) defautlt ‘‘,primary key (username));
[删除一个数据表/库]
drop table语句:用于删除库中的表,指定"库名.表名"作为参数
mysql >drop table auth.users; mysql >drop database auth;
[插入数据记录]
insert into用于向表中插入新的数据记录
格式:insert into [表名](字段1,字段2,....)values(字段1的值,字段2的值,....)
[例如]
向auth库的users表插入一条记录。
mysql >use auth; mysql >insert into users(username,userpassword) values(‘zhangsan‘,password(‘123456‘));
如果插入的记录包括表中的所有字段,则可省略字段部分
mysql >insert into users values(‘zhangsan’,password(‘123456‘));
[查询数据记录]
select语句:表示所有字段时,可以用“*”此时where表达式可以省略。
select 字段1,字段2,... from [表名] where 条件表达式
mysql >select * from auth.users; mysql >select username,userpassword from auth.users where username=‘zhangsan‘;
[修改数据记录]
update语句:
update 表名 set 字段名1=字段值1[,字段名2=字段值2] where 条件表达式
mysql >update auth.users set userpassword=password(‘‘) where username=‘lisi‘;
在mysql数据库中的各种用户包括root的信息都保存在mysql的user表中,可以用update语句直接修改mysql库的user表的password字段值,也可以使用mysqladmin工具来设置密码。
[删除数据记录]
delete语句:
delete from 表名 where 条件表达式
mysql >delete from auth.users where username=‘lisi’; mysql >select * from auth.users;
mysql数据库中默认添加了从本机访问的空用户(用户名和密码都为空)基于安全考虑,应该删除这些空用户。
mysql >select host,user,password from mysql.user where user=‘‘; mysql >delete from mysql.user where user=‘‘;
[维护mysql数据库]
[用户授权]
grant语句:当用户存在时,grant用于对用户信息修改,否则grant将创建新的用户
grant 权限列表 on 库名.表名 to ‘用户名‘@‘来源地址‘ [identified by ‘密码‘;] mysql >grant select on auth.* to ‘wangfei‘@‘localhost‘ identified by ‘123‘; grant语句授权的用户记录会保存到mysql库的user,db,host,tables_priv等相关表中,无需刷新即可生效。
来源地址可以是[(%代表任何)(域名/ip/网段)]
例如:"%.benet.com","192.168.88.%"等等。
当省略[identified by]时,表示密码为空即可登录。
[查看授权]
show grants语句:
show grants for 用户名@来源地址
mysql >show grants for ‘wangfei‘@‘192.168.88.109‘;
[撤销权限]
revoke语句:
revoke 权限列表 on 数据库名.表名 from 用户名@来源地址
撤销张三用户从本机访问的所有权限如下:
mysql >revoke all on auth.* from ‘zhangsan‘@‘localhost‘; mysql >show grants for ‘zhangsan‘@‘localhost‘;
[数据库的备份与恢复]
备份可采用的方式有很多,比如可以打包数据库文件夹/var/local/mysql/var/或者使用专用的导出工具mysqldump
格式1:导出指定库中的部分表
mysqldump [选项] 库名 [表名1] [表名2] ... > /备份路径/备份文件名
将mysql库中的user表导出为mysql-user.sql
mysql >mysqldump -u root -p mysql user 〉mysql-user.sql
格式2:导出一个或多个完整的库{包括其中的所有表}
mysqldump [选项] --databases 库名1 [库名2] ... > /备份路径/备份文件名
将整个auth库导出为auth.sql文件,都是以root用户进行身份验证。
mysql >mysqldump -u root -p --databases auth >auth.sql
格式3:导出所有的库
mysqldump [选项] --all-databases > /备份路径/备份文件名
当需要备份整个mysql服务器中的所有库时,数据量相对较大,可以添加--opt选项一优化执行速度,例如:以下将创建备份文件all-data.sql其中包括mysql服务器的所有库。
mysql >mysqldump -u root -p --opt --all-databases > all.-data.sql
其中常用的选项包括-u,-p用来指定用户名和密码。
跨主机备份:
下列的命令可以将host1上的sourceDB复制到host2上的targetDB,前提是host2上已经创建targetDB数据库。
mysqldump --host=host1 --opt sourceDB | mysql --host=host2 -C targetDB
只备份表结构:
mysqldump --no-data --databases mydatabase1 mydatabase2 mydatabase3 > test.sql
[查看备份文件内容]
通过mysqldump工具导出的sql脚本是文本文件,其中"/*..../"部分或以"--"开头的行表示注释信息。使用grep,less,cat等文本工具可以查看脚本内容。例如,执行以下操作可以过滤出auth.sql脚本中的数据库操作语句。
[root@localhost ~]#grep -v "^--" auth.sql |grep -v "^/" |grep -v "^$"
[恢复数据库]
mysql [选项] [库名] [表名] < /备份路径/备份文件名
以下操作将表导入到库test
[root@localhost ~]#mysql -u root -p test 〈 mysql-user.sql
以下操作将恢复所有的库
[root@localhost ~]#mysql -u root -p 〈 ~/all-data.sql
------------------------------------------------------------------------------------------
【结合crontab命令实现定时备份】
每天的凌晨2:30备份某一个主机上的所有数据库并压缩dump文件为gz格式,crontab -e
30 2 * * * root mysqldump -u root -pPASSWORD --all-databases | gzip > /mnt/disk2/database_`date ‘+%m-%d-%Y‘`.sql.gz
前面五个参数分别表示分钟,小时,日,月,周,*表示任意,date ‘+%m-%d-%Y‘得到当前日期的MM-DD-YYYY格式。
未完待续。。。
本文出自 “Hello_World” 博客,请务必保留此出处http://coward.blog.51cto.com/7599475/1621555
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。