MYSQL4.1权限管理
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| db |
| func |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| host |
| proc |
| procs_priv |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+---------------------------+
17 rows in set (0.00 sec)
登陆访问控制
阶段1:连接证实
服务器基于你的身份和你是否能通过供应正确的口令验证身份来接受或拒绝连接。
你的身份基于2个信息:
l 你从那个主机连接
l 你的MySQL用户名
阶段2:请求证实
对在此连接上进来的每个请求,服务器检查你是否有足够的权限来执行它,它基于你希望执行的操作类型。这正是在授权表中的权限字段发挥作用的地方。
服务器在存取控制的两个阶段使用在mysql
的数据库中的user
、db
和host
表
权限列表
权限 | 列 | 上下文 |
select | Select_priv | 表 |
insert | Insert_priv | 表 |
update | Update_priv | 表 |
delete | Delete_priv | 表 |
index | Index_priv | 表 |
alter | Alter_priv | 表 |
create | Create_priv | 数据库、表或索引 |
drop | Drop_priv | 数据库或表 |
grant | Grant_priv | 数据库或表 |
references | References_priv | 数据库或表 |
reload | Reload_priv | 服务器管理 |
shutdown | Shutdown_priv | 服务器管理 |
process | Process_priv | 服务器管理 |
file | File_priv | 在服务器上的文件存取 |
不同角色所关心的问题(mysql数据库,系统数据库非应用数据库)
应用者: 是否能够访问,host, user, db; 关心字段:Host, User, Passwd
开发者:除应用者有的外,还包括tables_priv, column_priv
安全访问
1 为root设定密码
shell> mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD('new_password')
WHERE user='root';
mysql> FLUSH PRIVILEGES;
或:
shell> mysql -u root mysql
mysql> SET PASSWORD FOR root=PASSWORD('new_password');
或:[推荐]
shell> mysqladmin -u root password new_password
2 向MYSQL增加新用户权限
你可以通过发出GRANT
语句增加新用户:
shell> mysql --user=root mysql
mysql> GRANT ALL PRIVILEGES ON *.* TO monty@localhost
IDENTIFIED BY 'something'
3 忘记root密码
1.先停止mysql
shell >/etc//init.d/mysql stop
2.以--skip-grant-table 的参数启动mysql
shell >mysql_safe --skip-grant-table&
3. 更改root 密码 123456
mysql> UPDATE user SET password=password('123456') WHERE user='root';
mysql> FLUSH PRIVILEGES;
mysql> exit
4. 重启mysql
shell >/etc//init.d/mysql restart
MYSQL备份
备份一个数据库的另一个方法是使用mysqldump程序:
- 为你的数据库做一个完整的备份:
2. shell> mysqldump --tab=/path/to/some/dir --opt –full
或shell> mysqldump samp_db >/usr/archives/mysql/samp_db. 1999-10-02
第一项— --tab保存了数据库路径,用于同一台机器或完全相同配置环境的机器.
第二项— 则是将指定数据库安全备份,可用到不同机器配置中,[推荐]
你也可以简单地拷贝所有的表文件(“*.frm”、“*.MYD”和“*.MYI”文件),只要服务器不在更新任何东西。这两种方法各有优劣,mysqldump与数据库服务协作,安全备份但备份速度较慢.直接copy数据库目录,简单快速但可能备份不完整(对当前数据库操作会遗失数据).
- 停止mysqld如果它正在运行,然后以--log-update选项启动它。你将得到一个名为“hostname.n”形式的日志文件, 这里n是随着你每次执行mysqladmin refresh或mysqladmin flush-logs、FLUSH LOGS语句、或重启服务器而递增的一个数字。这些日志文件向你提供了在你执行mysqldump处后面进行的复制数据库改变的所需信息。
此外,要形成备份日志脚本,要系统自动进行常规备份和渐进式备份.
PS:
压缩备份:
shell> mysqldump samp_db |tar zxvf >/usr/archives/mysql/samp_db. 1999-10-02 .tar.gz
MYSQL恢复
根据备份的两种方法,选择对应的措施.
l 如果你用直接从数据库拷贝来的文件,将它们直接拷回数据库目录,然而,此时你需要在拷贝文件之前关闭数据库,然后重启它。
l 如果你用mysqldump产生的文件,将它作为mysql的输入。
指定--one-database选项使得mysql只执行你有兴趣恢复的数据库的查询。
shell>mysql --one-database db_name < update.392
常用的程序
mysqld: mysql后台服务器
mysql: mysql客户端
mysqladmin:: 用来管理,常用于用户密码设定更改,权限刷新,创建数据库
mysqldump: 用来mysql备份
参考资料:
mysql4.1中文手册