服务器 频道

MySQL数据库服务器的配置

  3.4.调试Mysql

  安装Mysql授权表:

  如果你是第一次安装Mysql,你需要先创造MySQL授权表

  #/usr/local/bin/mysql_install_db

  启动Mysql进程:

  #/usr/local/bin/safe_mysqld &

  调试你的Mysql服务器:

  使用mysqladmin查看服务器是否正在运行。下列命令提供简单的测试来检查服务器启动和连接的应答:

  #/usr/local/bin/mysqladmin version
  #/usr/local/bin/mysqladmin variables

  从mysqladmin version的输出根据你的平台和MySQL版本略有不同,但是应该类似如下显示:

  #/usr/local/bin/mysqladmin version
  mysqladmin Ver 8.0 Distrib 3.22.32, for pc-linux-gnu on i686
  TCX Datakonsult AB, by Monty
  Server version 3.22.32
  Protocol version 10
  Connection Localhost via UNIX socket
  UNIX socket /tmp/mysql.sock
  Uptime: 5 days 17 hours 38 min 37 sec
  Threads: 2 Questions: 3276 Slow queries: 0 Opens: 19 Flush tables: 1 Open tables: 15

  Mysqladmin的其它使用方法,可以用--help选项来看他的帮助。

  使用mysql客户端程序:

  #/usr/local/bin/mysql -u[user]-p[password]

  -u的参数指定mysql的数据库用户,-p用于指定密码,例如用户名是wing,密码是12345:

  #/usr/local/bin/mysql -uwing-p12345

  注意u和wing之间以及p和12345之间都没有任何的空格,如果用户名和密码均正确系统者会显示一下信息:
  Welcome to the MySQL monitor. Commands end with ; or g.
  Your MySQL connection id is 826 to server version: 3.22.32

  Type ''help'' for help.

  mysql>

  
  说明你以及进入mysql的客户端,你可以使用基本的SQL语句对mysql数据库进行操作和管理。(SQL语言的使用请详见本章的附录)

  3.5.Mysql数据库的用户管理和存取权限

  MySQL有一个先进但非标准的安全/权限系统。它使用一个独立的数据库对存取权限进行严格的设置和管理,这也可以说是mysql数据库的一大特性;

  MySQL权限系统的主要功能是证实连接到一台给定主机的一个用户,并且赋予该用户在一个数据库上select、 insert、update和delete的权限。附加的功能包括有一个匿名的用户和对于MySQL特定的功能例如LOAD DATA INFILE进行授权及管理操作的能力。

  权限信息用user、db、host、tables_priv和columns_priv表被存储在mysql数据库中(即在名为mysql的数据库中)。

  本书所用的涉及由MySQL提供的权限名称显示在下表,还有在授权表中每个权限的表列名称和每个权限有关的上下文(表3):
  表3
  权限 列 功能
  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 在服务器上的文件存取

  select、insert、update和delete权限允许你在一个数据库现有的表上实施操作。

  SELECT语句只有在他们真正从一个表中检索行是才需要select权限,你可以执行某个SELECT语句,甚至没有任何到服务器上的数据库里的存取任何东西的许可。例如,你可使用mysql客户作为一个简单的计算器:

  mysql> SELECT 1+1;
  mysql> SELECT PI()*2;

  index权限允许你创建或抛弃(删除)索引。

  alter权限允许你使用ALTER TABLE。

  create和drop权限允许你创建新的数据库和表,或抛弃(删除)现存的数据库和表。
  注意:如果你将mysql数据库的drop权限授予一个用户,该用户能抛弃存储了MySQL存取权限的数据库!
  grant权限允许你把你自己拥有的那些权限授给其他的用户。

  file权限给予你用LOAD DATA INFILE和SELECT ... INTO OUTFILE语句读和写服务器上的文件,任何被授予这个权限的用户都能读或写MySQL服务器能读或写的任何文件。

  其余的权限用于管理性操作,它使用mysqladmin程序实施。

  reload命令告诉服务器再读入授权表,refresh命令清洗所有表并打开和关闭记录文件,flush-privileges是reload的一个同义词,其它flush-*命令执行类似refresh的功能,但是范围更有限,并且在某些情况下可能更好用。例如,如果你只是想清洗记录文件,flush-logs比refresh是更好的选择。

  shutdown命令关掉服务器。

  processlist命令显示在服务器内执行的线程的信息。kill命令杀死服务器线程。你总是能显示或杀死你自己的线程,但是你需要process权限来显示或杀死其他用户启动的线程。

  总的说来,只授予权限给需要他们的那些用户是一个好主意,但是你应该在授予某个权限时试验特定的警告:

  * grant权限允许用户放弃他们的权限给其他用户。2个有不同的权限并有grant权限的用户可以合并权限。

  * alter权限可以用于通过重新命名表来推翻权限系统。

  * file权限可以被滥用在服务器上读取任何世界可读(world-readable,即任何人可读)的文件到一张数据库表,然后其内容能用SELECT被存取。

  * shutdown权限通过终止服务器可以被滥用完全拒绝为其他用户服务, 。

  * precess权限能被用来察看当前执行的查询的普通文本,包括设定或改变口令查询。

  * 在mysql数据库上的权限能被用来改变口令和其他存取权限信息。(口令被加密存储,所以一个恶意的用户不能简单地读取他们。然而,有足够的权限,同一个用户能用不同的一个代替一个口令。)

  有一些事情你不能用MySQL权限系统做到:

  * 你不能明显地指定一个给定用户应该被拒绝存取。即,你不能明显地匹配一个用户并且然后拒绝连接。

  * 你不能指定一个用户有权创建立或抛弃一个数据库中的表,也不能创建或抛弃数据库本身。

  3.6.Mysql数据库的备份

  备份Mysql数据库的方法是使用mysqldump程序:

  1. 为你的数据库做一个完整的备份:

  2. shell> mysqldump --tab=/path/to/some/dir --opt --full
  你也可以简单地拷贝所有的表文件(“*.frm”、“*.MYD”和"*.MYI"文件),只要服务器不在更新任何东西。

  3. 停止mysqld如果它正在运行,然后以--log-update选项启动它。你将得到一个名为“hostname.n"形式的日志文件, 这里n是随着你每次执行mysqladmin refresh或mysqladmin flush-logs、FLUSH LOGS语句、或重启服务器而递增的一个数字。这些日志文件向你提供了在你执行mysqldump处后面进行的复制数据库改变的所需信息。

  如果你必须恢复一些东西,尝试首先用myisamchk -r恢复你的表。这应该处理所有情况的99.9%。如果myisamchk失败,尝试下列过程:

  1. 恢复原来的mysqldump备份。

  2. 执行下列命令以再次运行更新日志中的更改:

  3. shell> ls -1 -t -r hostname.[0-9]* | xargs cat | mysql

  ls被用来以正确的顺序得到所有的日志文件。

  你也可以与SELECT * INTO OUTFILE ''file_name'' FROM tbl_name做有选择的备份并且用LOAD DATA INFILE ''file_name'' REPLACE ...恢复。为了避免重复记录,在表中你需要一个PRIMARY KEY或UNIQUE键。当在唯一键值上一个新记录与一个老记录重复时,REPLACE关键词使得老记录用一个新记录替代。

0
相关文章