(2)将mysql数据库中的db表的结构导出至/tmp/mysql.db.str中
# /usr/local/servers/mysql/bin/mysqldump -d -u root -p mysql db > /tmp/mysql.db.str
(3)将mysql数据库中所有表格的数据(不包括结构)都导出至/tmp/mysql.data中
# /usr/local/servers/mysql/bin/mysqldump -t -u root -p mysql > /tmp/mysql.data
注意,mysql数据库中存放在关于MySQL数据库服务器的权限信息,在做完试验之后应该立即将/tmp/test.bak、/tmp/mysql.db.str、/tmp/mysql.data删除,以免造成安全隐患
4.6.MySQL的权限控制及用户管理
MySQL使用了一个独立的数据库用于存储用户的权限信息,可以提供细至每个操作的权限控制。这为精确的控制用户的权限提供了便利,同时也给用户的管理增加了复繁性。由篇幅有限,这里我们只能简单的讲一些权限控制的技巧。
MySQL的权限主要由两部分构成,这两部分分别存放于两个表user和db里面。
user表主要用来存放用户名、密码、用户可以从那些主机上登录、权限是否有创建数据库的权限等
db 表主要用来存放用户对具体的某个数据库是否有读取、删除、添加、更新的权限等。
了解了这两个表对权限控制的作用之后要控制具体用户的权限就容易多了。下面我们以一些简单的例子来说明权限控制的方法:
说明:因为这些例子都涉及到权限的更改,所以在做完修改之后都必须使用 flush privileges 命令更新MySQL的权限表。所做的更改才会有以后,同样以后如果自行修改了MySQL的权限表也必须使用flush privileges命令进行更新。同时所有的命令都是以root的身份在mysql命令行工具中执行,启动mysql命令行工具的方法是进入mysql的安装路径/bin内运行./mysql,对于本书来说是 /usr/local/servers/mysql/bin/mysql
1.添加新用户,只允许在本地登录,没有任何权限
INSERT INTO user (Host,User,Password) VALUES
('localhost','mydbuser',PASSWORD('password'));
运行此命令之后,将会产品一个名为mydbuser的新用户,其口令为password,只允许在本地计算机中登录,没有任何的权限。
2.添加新用户,允许在任何地方登录,对数据库 test 拥有读取、添加的权限
INSERT INTO user (Host,User,Password) VALUES
('%','mydbuser1',PASSWORD('password'));
INSERT INTO db (Host,Db,User,Select_priv,Insert_priv)