资源描述
MySQL简单管理及MySQL操作,MySQL数据库简单的管理及MySQL数据库的操作。通过学习,需要掌握以下内容: 进入MySQL设置管理员密码。 增加用户并设置密码。 设置用户权限。 取消权限及删除用户。 备份和复制数据库。 MySQL数据库定义。 SQL数据操作。,1 进入MySQL设置管理员密码,MySQL数据库的管理员应该知道如何设置管理员账号的密码,当用户忘记MySQL数据库管理员的密码时,或MySQL数据库系统的密码被其他人知道以及长时间使用一个密码,影响MySQL数据库系统的安全时,用户可以进入MySQL数据库对管理员密码进行修改。下面就介绍一下怎么样修改MySQL数据库管理员的密码,分为两种情况,一种是知道管理员的密码去修改,另一种是忘记了管理员的密码。,1.1 修改管理员密码,换掉MySQL数据库的旧密码。首先要运行“ms.dos”命令窗口,然后通过命令“cd C:MySQLbin”,进入MySQL数据库的“bin”目录下,如图10.1所示。 在图10.1所示的窗口中,表明读者已进入MySQL的bin目录下,接下来就进行修改密码的操作,在光标闪的地方输入如下的命令。 mysqladmin u root p password mypassword 在此命令中,“password”后面跟的是读者要修改的新密码。也可以把管理员的名字修改为读者的名字。运行引命令后,会提示用户输入旧密码,这样保证了数据库的安全,如图10.2所示。,1.2 重置管理员密码,如果用户忘记了MySQL数据库的密码,也可以通过以下操作来重新设置MySQL数据库的密码。 (1)首先要把MySQL数据库的所有进程结束,如果是windows,直接调出进程管理器结束。 (2)然后以安全模式启动MySQL数据库,安全模式启动MySQL数据库的方法是运行“ms.dos”命令窗口,然后通过命令“cd C:MySQLbin”,进入MySQL数据库的“bin”目录下。 (3)无密码进入MySQL数据库,命令如下所示。 safe_mysqld -skip-grant-tables ,2 增加用户并设置密码及设置用户权限,MySQL数据库管理员应该知道如何设置MySQL用户账号,指出哪个用户可以连接服务器,从哪里连接,连接后可以做什么。,2.1 设置用户权限的命令,MySQL现在的版本中,引入了两条语句,使得管理员的工作更容易完成,“gradt”语句是用于创建MySQL数据库中的用户并指定其权限,而“revoke”语句是用来删除用户的权限。两条语句是为MySQL数据库系统的前端服务的,并提供与直接操作这些表的内容的不同方法。这两条语句影响MySQL数据库系统中的4个表,这4个表如表10.1所示。,2.2 数据库用户有哪些权限,下面介绍下MySQL数据库中用户的权限,给用户设置权限就是告诉MySQL数据库此用户可以连接哪个数据库及数据表,连接数据库及数据表后可以做什么工作。MySQL数据库中用户的权限如表10.2所示。,2.3 增加用户并赋予权限,本小节会演示一些去权限方面的命令,为了便于读者阅读,通过编号形式展现每个命令和功能。 (1)增加一个用户,并赋予其权限及口令。MySQL数据库增加用户的命令格式如下。 grant select on 数据库.* to 用户名登录主机 identified by “密码” (2)创建一个只能在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作。创建此用户的命令如下所示。 grant select,insert,update,delete on mydb.* to test1localhost identified by 123; (3)把某个查询表的权限授予指定用户,此操作是如何来实现,下面笔者就以数据表“table1”为例,把数据表“talbe1”的所有权限赋予给用户“test1”。实现此操作的命令如下所示。 grant select on table table1 to test1; (4)把多个数据表的权限授予指定几个用户,此操作是如何来实现。下面笔者就以数据表“table1”、“table2”为例,把数据表“talbe1”和“table2”的所有权限赋予给用户“test1”和“test2”。实现此操作的命令如下所示。 grant all privileges on table table1,table2 to test1,.test2; 5)如果想把某个数据表的查询权限授予所有用户,此操作是如何实现的呢?下面就以数据表“table1”为例,把数据表“talbe1”的所有权限赋予给所有用户。实现此操作的命令如下所示。 grant select on table table1 to public; (6)如果想把某个查询表和修改用户名的权限授予指定用户,那么此操作该怎样完成呢?下面就以查询表“table1”为例,把查询表“talbe1”的查询表和修改用户名权限赋予给用户“test1”。实现此操作的命令如下所示。 grant update (username),select on table table1 to test1; (7)如果想把某个数据表的插入信息权限授予指定用户,此操作该如何实现呢?下面就以数据表“table1”为例,把数据表“talbe1”的插入信息权限赋予给指定用户。实现此操作的命令如下所示。 grant insert on table table1 to test1; (8)如果想把某个数据库的创建数据表的权限授予指定用户,则此操作是怎样的呢?下面就以数据库“database1”为例,把数据表“database1”的创建数据表的权限赋予给用户“test1”。实现此操作的命令如下所示。 grant createtab on database database1 to test1;,3 取消权限及删除用户,取消MySQL数据库中一个用户的权限,并删除此用户。如果一个用户已经不使用此账号时,MySQL数据库管理员就要对此用户进行取消权限并删除。这样可以保证MySQL数据库系统的安全,以免不法用户使用此账号对MySQL数据库系统进行破坏。,3.1 取消用户权限和删除用户,下面介绍如何取消用户权限和删除用户。取消用户的权限,可以使用“revoke”语句,此语句的语法与“grant”非常相似,不同处就是“grant”语句中的“to”用“from”来取代并且“revoke”语句中没有“indetifed by”和“with grant option”子句。取消用户权限的语句格式如下所示。 revoke privileges (columns) on what from user 此语句中,“user”部分必须与原来“grant”语句的读者想收回授权的用户的“user”部分匹配。“privileges”部分可以不匹配,读者可以使用“grant”语句给用户授权,然后使用“revoke”语句取消用户的部分权限。 “revoke”语句中只取消了用户的权限,并没有删除此用户。虽然读者取消了用户的所有权限,但是在“user”表中用户记录依然是存在的。这就说明用户仍然可以连接MySQL数据库服务器。如果想要完全删除一个用户,就必须要使用下一条“delete”语句,明确地从“user”表中删除用户的记录。删除用户的格式如下所示。 delete from user where User=”username” and host=”hostname”; flush privileges;,3.2 实例演示删除用户的操作,下面用实例来近一步介绍如何取消用户的权限并删除此用户。如果读者想把用户“test1”的所有权限取消并删除此用户,操作如下所示。 (1)取消用户“test1”的所有权限。取消用户所有权限的命令如下所示。 revoke select,insert,update,delete on *.*from test1; (2)执行此命令后,用户“test1”的所有权限将被取消。然后把此用户的记录从“user”表中删除。命令如下所示。 DELETE FROM user WHERE User=test1 and Host=localhost; (3)此命令执行完成后,用户被删除,但是读者并没有重新载入授权表,下面是重新载入授权表的命令如下所示。 flush privileges; 这样一个已经存在的用户就被MySQL数据库管理员完全删除了。,4 备份和复制数据库,数据库的备份是很很重要的,因为在数据库出现表丢失或损坏情况时,或者如果系统崩溃时,用户肯定是希望数据库里的数据尽可能丢失最小的数据,最好是恢复到崩溃发时前的状态。如果用户对数据库做了备份,那么就不怕出现这一类的问题了,可以把数据库恢复到出现问题前的状态。就不会造成数据的丢失了。 备份数据库有两个主要的方法,使用“mysqldump”程序或直接复制数据库文件。但是每种方法都有其优点和缺点。,4.1 备份数据库,“mysqldump”备份数据库方法是与MySQL数据库服务器协同操作。直接复制方法是在服务器外部进行的。并且使用复制数据库的方法来备份数据库时,必须采取一定的措施来保证没有用户正修改或者将要复制数据库。如果用文件系统备份来备份数据库,也会发生同样的问题。如果数据库中数据表在文件系统备份过程序中被修改,进行备份的数据表文件就会出现与原数据文件不一致的现象,对以后恢复数据表将会失去意义。文件系统备份与直接复制文件的区别是直接复制数据库文件时可以完全控制备份过程,这样能采取措施确保MySQL数据库服务器上的表不受干扰。 注意:使用“mysqldump”要比直接复制数据库文件要慢。 下面介绍如何使用“mysqldump”程序备份数据库文件。采用“mysqldump”程序产生数据库备份文件时,文件内容包含创建正在转储的数据表的“create”语句和包含数据表中行数据的“insert”语句。也就是说“mysqldump”程序产生的输出可在以后用于“mysql”的输入来重建数据库。,4.2 数据库的破损恢复,数据库损坏的发生有很多原因,程度也不同。可能损坏一个数据表,也可能必须替换整个数据库。在某些情况下也需要恢复,比如用户错误的删除了数据库。读者可以实施数据库的恢复。 恢复数据库有两种信息源,数据库备份文件和更新日志。备份文件将表恢复到实施备份时的状态,然而一般数据表在备份与发生问题间的时间内已经被修改,更新日志包含了用于进行这些修改的查询。读者可以使用日志文件作为MySQL数据库的输入来重复查询。这也是为什么启用更新日志的原因。 注意:读者在备份数据库文件前需要关闭MySQL数据库,然后重启MySQL数据库。,4.3 恢复单个表,下面介绍一下,如何恢复单个表。恢复单个数据表较为复杂。如果读者用一个由“mysqldump”生成的备份文件,并且其不包含读者需要的数据的数据,则需要从相关行中提取读者需要的数据,并将其作为MySQL数据库的输入,这是容易的部分。难的部分是从只运用该数据表的更新日志中拉出一部分,“mysql_find_rows”实用程序对此很有帮助,它能够从更新日志中提取出多行查询。 另一个办法是使用另一台服务器恢复整个数据库,然后复制需要的数据表文件夹到原数据库中,这可能是一个简单的方法,不过,当读者将文件复制到原数据库目录中时,需要确保原数据库的服务器关闭状态。,5 MySQL数据库定义,MySQL数据库的定义就是MySQL数据库的命名规则和其创建语法。MySQL数据库的命名可以是字母、下画线和数字。创建一个新的MySQL数据库,可以使用“create”语句来实现的。,5.1 增加、删除及选择数据库,对于MySQL数据库进行操作时,可以使用MySQL数据库中的命令来增加数据库及数据表、删除数据库及数据表、选择数据库。下面对这些命令进行介绍。,5.2 数据表的组成及建立、索引和修改、删除数据表,在MySQL数据库中,用于保存数据记录的结构被称为数据表。而每一条数据记录则是由更加小的数据对象,即数据类型组成。因此,一个或多个数据类型组成了一条数据记录,一条或多条数据记录组成了一个数据表。 下面就来介绍如何创建用户存储数据的数据表,数据表中又分为好多个字段,在创建数据表时,这此字段也要被创建,并给这此字段设置数据类型。用于存储不同类型的数据。创建数据表的语法格式如下所示。 create table tablename ( 字段名1 数据类型 (大小), 字段名2 数据类型 (大小), 字段名3 数据类型 (大小) );,6 SQL数据操作,SQL数据操作是使用SQL语句对MySQL数据库进行增加“insert into”、修改“update”和删除“delete”数据表中的记录。,6.1 数据的增加,数据的增加,是使用SQL语句对MySQL数据库中数据表的记录进行添加。SQL中的“insert into”命令可以在现有的数据表的末尾增加一条新的记录。新记录包含了由“insert into”命令指定的数据。读者可以在命令中直接输入数据,可以通过一个指定的数组或者内存变量来输入数据。SQL增加数据的命令的语法格式如下所示。 insert into (数据表名) values( (表达式) ); 在此语法的格式中,“into(数据表名)”此子句是指定了准备在其中增加记录的数据表的名字。“数据表名”表示一个相应的数据表文件名的表达式。它可是是一个固定的数据表的文件名,也可以是一个表达式,通过这个表达式可以计算出最终数据表文件的名字。其中可以包含一个驱动器名及目录路径。,6.2 数据的删除,数据的删除,是使用SQL语句对MySQL数据库中数据表的记录进行删除。SQL中的“delete”命令可以在现有的数据表中删除满足条件的数据记录。删除命令的语法格式如下所示。 delete from 数据表名 where(条件语句) 其中“delete”是从指定的数据表中删除满足由“where”给出的条件的记录。并返回删除的记录的个数。 如果发出一个没有“where”子句的“delete”命令,数据表中的反有行都会被删除。MySQL数据库通过创建一个空表来完成,它比删除每行要快。在这种情况下,“delete”返回“0”作为受影响记录的个数。 注意:MySQL数据库不能返回实际上被删除的行数,因为进行再创建而不是打开数据文件。只要数据表定义文件“表名.frm”是有效的,数据表才能这样被再创建,即使数据或索引文件破坏了。,6.3 数据的修改,修改数据表中的内容是指数据表中的记录如果是有不正确的,可以通过此语句来实现数据记录的更正。修改数据表记录的一般格式如下所示。 update low_priority set (属性1=表达式1, 属性2=表达式, 属性n=表达式n) where(条件); “update”用于新值更新现存数据表中的列。“set”子句指出哪个列要修改和应该被给定的值,“where”子句,如果给出,指定哪个行应该被更新,否则所有行被更新。 如果指定关键词“low_priority”,执行修改语句被推迟到没有其他客户下在读取表时。如果从一个表达式的表名存取列,修改语句使用列的当前值。比如,下列语句设置“age”为它的当前值加“”。 update persondata set age=age+1;,7 小结,通过对MySQL的简单管理及MySQL的操作的学习掌握以下内容。 怎么样增加用户并设置密码及设置用户权限。 如何取消权限及删除用户。 如何备份及复制数据库,两者的区别及共同点。 如何实现增加、删除及选择数据库。 数据表是由什么组成的及建立、索引和修改、删除数据表的方法。 如何在数据表中增加数据。 如何在数据表中删除数据。 如何在数据表中修改数据。,
展开阅读全文