数据库管理员的职责 服务器的启动与关闭 用户帐户维护 日志文件维护 数据库的备份与拷贝 服务器的优化 数据库管理系统的软件更新 数据目录的安全性 服务器的安全性 灾难恢复 预防性维护 `````````````````````````````````````````````````` 数据库的启动与关闭 1、数据库的启动: 方法一:使用service命令启动MySQL #servicemysqldstart //mysqld是MySQL的守护进程,通过运行它来启动MySQL服务。 方法二:使用mysqld脚本启动MySQL #/etc/init.d/mysqldstart 方法三:使用safe_mysqld实用程序启动MySQL服务,此方法可以使用相关参数 #safe_mysqld& 使用&符号将safe_mysqld放在后台运行。 ```<BR>校验MySQL是否被启动: <BR>#servicemysqldstatus <BR>//返回如下信息,表示已经启动 <BR>mysqld(pid1663)isrunning... <BR>//1663是mysqld运行的进程号,可能根据不同系统运行的进程数量而不同 <BR>若需要重新启动MySQL可以使用如下命令之一: <BR>#servicemysqldrestart <BR>#/etc/init.d/mysqldrestart <BR> 2、数据库的关闭: 可以使用如下命令之一: #servicemysqldstop #/etc/init.d/mysqldstop #/mysqladminshutdown MySQL管理 修改root管理密码 方法一: mysql>setpasswordfor‘帐号'@‘主机'=old_password(‘密码'); updatemysql.usersetpassword=old_password(‘密码')wherehost=‘主机'anduser=‘帐号'; flushprivileges; 方法二: mysqladminpassword'crq' 用户密码 对于MySQL密码可以使用PASSWORD()和ENCRYPT()函数进行加密 mysql>selectPASSWORD(“alex”); “23fc96e064be0017” 注:ENCRYPT()在Windows上不可用 方法三:使用update语句和password()函数将root口令设置为crp。 mysql>updateusersetpassword=password('crq') ->whereuser='root'; //返回如下信息,表示授权表user修改成功 QueryOK,2rowaffected(0.09sec) Rowsmatched:2changed:2warnings:0 注意:由此种方法是直接对授权表user进行修改,而服务器只有在启动时才会加载授权表中的权限设置,因此必须要使用客户端程序mysql环境下的flushprivileges命令或使用管理工具mysqladmin的flush-privileges子命令通知服务器重新加载授权表。 mysql>flushprivileges;//此时即生效可以使用。 ``````````````````````````````````````````````````````````````````` 改变数据库存储路径 在Window下,MySQL的所有数据库都保存在“%mysqlroor%data”目录下。 停止MySQL服务 修改%systemroor%my.ini文件 [mysqld] datadir=D:/data 将原目录中的所有文件和文件夹内容,全部移动到新的目录D:/data目录中。 重启MySQL服务 修改MySQL字符集 找到MySQL配置文件my.ini,一般在C:windowmy.ini。 在my.ini文件里面加上“default-character-set=gbk#”或gb2312,utf8 重启MySQL服务 删除匿名用户: myslq>deletefromuserwhereuser=''; //返回如下信息,表示匿名用户删除成功 QueryOK,2rowaffected(0.03sec) 添加新的用户权限: 使用grant语句用于授予用户权限, 语法: GRANTpriv_type[(column_list)][,priv_type[(column_list)]…] ON{.||db_name.|db_name.tabl_name|db_name} TOuser_name[IDENTIFIEDBY‘password'] [,user_name[IDENTIFIEDBY‘password']…] [WITHGRANTOPTION] 创建新用户 制定用户名,最长允许为16个英文字符 制定允许该用户可以访问的数据库和表 制定允许该用户对数据库做什么的操作 制定允许该用户从哪些主机/IP进行远程连接 制定允许该用户对其他用户进行授权或取消授权 例如:添加一个可以从本地主机连接到MySQL服务器的超级用户crq,但是连接时必须使用口令crqpass mysql>grantallon.tocrq@localhostidentfiedby'crqpass'withgrantoption; //返回如下信息,表明权限设置成功 QueryOK,0rowsaffected(0.02sec) 例如:使用同样的方法添加一个可以从其他任何地方连接到MySQL服务器的超级用户crq,但是连接时必须使用口令crqpass mysql>grantallon.tocrq@'%'identifiedby‘crqpass'withgrantoption; 授予用户特定的权限: 使用grant语句添加一个可以从本地机连接的MySQL服务器的用户user1,并且只授予其针对sales数据库中employee表的select和insert权限。 mysql>grantselect,insertonsales.employeetouser1@localhostidentifiedby‘user1pass'; 说明:使用:#mysql–uuser1–puser1pass登录数据库以后可以做如下操作: mysql>usesales;//打开sales数据库 mysql>showtables;//只能看到employee表 mysql>selectfromemployee;//可进行查看操作 mysql>insertintoemployee…….//可进行插入操作。 撤销用户权限: 语法:REVOKEpriv_type[(column_list)][,priv_type[(column_list)]…] ON{.||db_name.*|db_name.tbl_name|db_name} FROMuser_name[,user_name…] 例如:撤消用户user1针对sales数据库中employee表的insert权限: mysql>revokeinsertonsales.employeefromuser1@localhost; //返回如下信息,表明权限撤销成功。 QueryOK,0rowinsetaffected(0.00sec) ``````````````````````````````````````````````````````````````````````````````````````````` 权限更改何时生效 当mysqld启动时,所有的授权表内容被读进存储器并且从那点生效。 用GRANT、REVOKE或SETPASSWORD对授权表施行的修改会立即被服务器注意到。 如果你手工地修改授权表(使用INSERT、UPDATE等等),你应该执行一个FLUSHPRIVILEGES语句或运行mysqladminflush-privileges告诉服务器再装载授权表,否则你的改变将不生效,除非你重启服务器。 权限更改的影响 当服务器注意到授权表被改变了时,现存的客户连接有如下影响: 表和列权限在客户的下一次请求时生效。 数据库权限改变在下一个USEdb_name命令生效。 全局权限的改变和口令改变在下一次客户连接时生效。 数据库的备份与恢复 1、数据库的备份: A、用mysqldump备份数据库: 语法:mysqldump[OPTIONS]database[table] 实例: 将数据库sales备份成sales_bak030630.sql文件。 #mysqldump–uroot–p--optsales>sales_bak030630.sql //返回如下信息,表明备份成功 -rw-r--r--1rootroot2296Jun2923:30sales_bak030630.sql B、用直接拷贝的方法备份数据库: 不用mysqldump来备份数据库或表的另一种方法是直接拷贝表文件。通常可利用像cp、tar或cpio这样的实用程序来进行。当使用直接拷贝备份(direct-copybackup)方法时,必须确保没有使用这些表。如果在拷贝一个表的同时服务器正在修改它,则拷贝无效。 确保拷贝完整性的最好方法是关闭服务器,拷贝文件,然后重新启动服务器。 2、数据库的恢复: 数据库系统出现崩溃时,应该使用最近的一次备份对数据库进行恢复,如果启用了更新日志,还需要重新执行更新日志中最近一次备份之后对数据库进行修改的任何查询,以尽可能将数据恢复到崩溃时刻所处的状态。 #mysql–uroot–psales<sales_bak030630.sql 优化表 在大多数情况下,优化表的做法很值得。当一个表被多次修改,那它的结构将很快变得支离破碎,其结果是导致性能的下降。这个时候可以使用OPTIMIZETABLE命令来刷新,清理出空间。 mysql>OPTIMIZETABLEtablename; 导入和导出记录 INSERT语句不是向表中插入记录的唯一方法,MySQL还允许使用LOADDATAINFILE命令一次性插入多条记录。这个命令可以从文本文件读出原始数据(该文件可以放置在连接服务器上或者客户端),在列和行界定符号的基础上进行分析,然后自动产生INSERT语句来向一个表写数据。 导入数据 默认情况下,MySQL认为数据文件是在服务器上,在LOADDATAINFILE语句中指定位置。 如果想要使用客户机上的数据,可以在语句中添加LOCAl关键字,告诉MySQL在客户机的文件系统上查找文件。 mysql>LOADDATALOCALINFILE‘c:data.txt' INTOTABLEuser FIELDSTERMINATEDBY‘,'LINESTERMINATEDBY‘n'; 最好在此之前加上如下命令 mysql>LOADDATALOW_PRIORITYINFILE‘data.txt'INTOTABLEuser; 当然还有IGNOREREPLACE等关键字。 导出数据 如果不指定一个FIELDS子句,缺省值与这样写的相同: FIELDSTERMINATEDBY't'ENCLOSEDBY''ESCAPEDBY'' 如果不指定一个LINES子句,缺省值与这样写的相同: LINESTERMINATEDBY'n' 换句话说,缺省值导致读取输入时,LOADDATAINFILE表现如下: 在换行符处寻找行边界 在定位符处将行分成字段 不要期望字段由任何引号字符封装 将由“”开头的定位符、换行符或“”解释成字段值的部分字面字符 导出数据 相反,缺省值导致在写入输出时,SELECT...INTOOUTFILE表现如下: 在字段之间写定位符 不用任何引号字符封装字段 使用“”转义出现在字段中的定位符、换行符或“”字符 在行尾处写换行符 注意,为了写入FIELDSESCAPEDBY'',对作为一条单个的反斜线被读取的值,你必须指定2条反斜线值。
php_mysql_高级.rar (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|