转载时请务必以超链接形式标明文章 原始出处和作者信息及本版权声明。
链接:http://www.dbasky.net/archives/2009/02/mysql2.html
一.mysql库中的几个表的简介:
user: 决定是否允许或拒绝到来的连接,对于允许的连接,user表授予的权限指出用户的全局权限。这些权限适用于服务器上的all数据库。
db: 决定用户能从哪个主机存取哪个数据库,权限列决定允许哪个操作,授予的数据库级别的权限适用于数据库和它的表。
当你想要一个给定的db表行应用于若干主机时,db和host表一起使用.
tables_priv和columus_priv表类似于db表,但是更精致它们在表和列级应用而非在数据库级。授予表级别的权限适用于表和所有它的列,授予列级别的权限只适用于专用列.
procs_priv表适用于保存的程序。授予程序级别的权限只适用于单个程序。
二.当mysqld服务器启动时,将授权表的内容读入到内存中,你可以通过flush privileges语句或执行mysqladmin flush-privileges或mysqladmin reload命令让它重新读取表.
三.一些mysql权限系统做不到的。
1.你不能明显地指定给定的用户应该被拒绝访问,即,你不能明显地匹配用户然后拒绝连接。
2.你不能指定用户有权建立或删除数据库中的表,但不能创建或删除数据本身。
四.访问mysql时dns解析错误的解决方案.
1.找出dns服务器的错误并修复
2.在msyql授权表中指定IP号不是主机名
3.修改/etc/hosts
4.用-skip-name-resolve选项启动mysqld
5.用-skp-host-cache先项启动mysqld
五.设置帐户密码:
1.msyqladmin -u user_name -h host_name password "newpwd"
2. set password for 'user'@'host' = password('newpwd')
3.grant usage on *.* To 'user'@'%' identified by 'newpwd'
六.备份策略:
1.定期完全备份:
shell> mysqldump -single-transaction -all-databases>backup_sunday_1_PM.sql
这是在线非块备份,不会干扰对表的读写.以上是假定表为innodb,single-transaction使用一致性地读,并且保证mysqldump所看见的数据不会更改。对于其它类型的表必须假定备份过程中没有对Mysql账号进行管理更改.
2.增量备份:(应使用-log-bin选项启动Mysql服务器)
shell> mysqldump -single-transaction flush-logs -all-databases>backup_sunday_1_PM.sql
flush-logs通知服务器关闭当前的二进制日志并建一个新文件。执行命令后,可以删除之前的日志,然后备份之后新产生的日志文件就可。
3.恢复备份:
shell>>mysql < backup_sunday_1_PM.sql //导入备份的数据
shell>>mysqlbinlog gbichot2-bin.000007 | mysql //导入增量备份
七.mysqlbinlog 数据恢复技巧
1.前提:mysql服务器启用了二进制日志
2.指定时间:可以通过-start-date和-stop-date选项指定datetime格式的起止时间.
mysqlbinlog -stop-date="2005-04-20 9:59:59″ /var/log/mysql/bin.123456\
mysql -u root -p mypwd
3.恢复位置:你可以更加准确的检查日志中的错误然后进行备份,这种方案更加精确.
措施:
a.先把大概出错的时间段时的sql语句全部重定向到临时文件中。
mysqlbinlog -start-date='2005-04-20 9:59:59′ -stop-date="2005-04-20 10:59:59″ \
/var/log/mysql/bin.123456 > /tmp/mysql_restore.sql
b.用文件编辑器打开寻找不想要的语句,记下错误日志的位置起始与结束
mysqlbinlog -stop-position="368312″ /var/log/mysql/bin.123456 \
mysql -u root -pmypwd
mysqlbinlog -start-position="368315″ /var/log/mysql/bin.123456 \
mysql -u root -pmypwd
发表评论