4.5.MySQL常用命令简介
在MySQL数据库服务器的软件包中除了数据库服务器核心之外还有许多应用程序,这些应用程序负责管理、维护MySQL的方方面面。这些应用程序包括SQL语法分析器,数据库管理程序,数据备份程序等等。
MySQL的每一个应用程序都带上很多的参数,因为篇幅的问题我们这里也只能做一些简单的介绍。详细的内容您可以使用相应的程序带上 --help 参数查看。
MySQL的启动
在很多情况下我们需要手工的启动和关闭MySQL服务器(如初始化、测试、数据恢复等等)。这时就需要用到以下的命令来控制MySQL服务器的运行状态。
启动MySQL:
/usr/local/servers/mysql/bin/safe_mysqld&
关闭MySQL:
/usr/local/servers/mysql/bin/mysqladmin -u root -pyoupassword shutdown
注意,在缺省的情况下只有root才有权限启动和关闭MySQL服务器。同时,关闭MySQL时如果root有口令的话还需要通过提供-p参数告诉mysqladmin需要提供密码。
MySQL语法分析器mysql的使用简介
mysql是MySQL自带的一个数据库客户端语法分析器。这个分析器可以直接的与MySQL边接,执行用户输入的SQL指令,对数据库进行相关的操作。
下面介绍一下mysql常的参数,并对其使用进行一些简单的介绍:
-h 指定要连接的主机名或IP地址
-u 指定连接时使用的用户名
-p 指定连接时使用的口令
使用mysql连接MySQL的例子:
# /usr/local/servers/mysql/bin/mysql -h localhost -u root -p
Enter password:********
其中,星口所包括的内容是我们root所对应的密码,如果root的密码为空,您可以直接使用:
# /usr/local/servers/mysql/bin/mysql -h localhost -u root
登录,成功登录后,mysql命令会提示与下面的信息相类似的提示:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 43 to server version:3.22.23
Type @#help@# for help.
mysql>
同时命令行出现"mysql>"提示符,您现在就可以开始输入SQL语句了,常用的语句如下:
SHOW DATABASES 显示系统中所有数据库名
SHOW TABLES 显示当然数据库中所有的表名
USE DATABASE_NAME 使用指定数据库做为当然数据库
QUIT 退出mysql解释器
其中,DATABASE_NAME为数据库,使用SHOW TABLES前必须先使用USE命令指定数据库。
MySQL管理工具mysqladmin的使用简介
mysqladmin是MySQL数据库软件包中的一个数据库管理工具。缺省的情况下,只有MySQL的数据库管理员(缺省为:root)才可以使用。
mysqladmin 是一个功能强大的命令行工具,它的功能都可以通过一系列的命令行参数进行控制,下面列出一些常用的参数:
--f 在执行操作时不做任何的确认提示
-h 指定要连接的主机名或IP地址
-p 指定连接用户的密码
-P 指定主机中MySQL监听的端口号(缺省为:3306)
-u 指定连接时使用的用户名
除了这些参数之外,mysqladmin还有很多命令,同样我们将一些常用的命令列出来供您参考:
create database dbname #创建新的数据库,其中dbname为数据库名
drop database dbname #删新数据库,其中dbname为数据库名
extended-status #显示服务器的当前状态,如同时连接的客户端数量
flush-privileges #刷新权限表,当我们修改用户信息,如口令时就需要
#使用到此命令刷新MySQL的权限表
password #修改指定用户的密码,前面已经用到了
shutdown #关闭服务器
接下来我们列一些简单而常用的例子:
这里例子在使用前,都必须先将当前路径设置为/usr/local/servers/mysql/bin,下面是设置路径的命令:
# cd /usr/local/servers/mysql/bin
(1)创建新的数据库
# ./mysqladmin -u root -p create database mytestdb #以root的身份创建数据库
(2)删除数据库
# ./mysqladmin -u root -p drop database mytestdb #以root的身份删除数据库
(3)修改用户密码
# ./mysqladmin -u root -p password @#password@# #将root的密码改为password
(4)刷新权限表
# ./mysqladmin -u root -p flush-privileges #刷新权限表
(5)关闭数据库服务器
# ./mysqladmin -u root -p shutdown #关闭数据库
MySQL数据导出工具mysqldump的使用简介
很多情况下我们都需要将数据库的数据导出到一个文件内进行备份或者到另外一个数据库进行导入操作。这时就需要使用到MySQL提供的数据导出工具mysqldump。
其基本的语法为:
# mysqldump [OPTIONS] database [tables]
如果没有指定任何的选项和表名(tables),mysqldump会 将整个数据库的内容都导出来。下面是mysqldump一些常用的参数:
--add-drop-table 在每个表格前加上DROP TABLE语句,用于在导入时删除原有的表格
-h 指定要连接的主机名或IP地址
-t 只备份数据,而不备份表结构
-d 只备份表结构,而不备份数据
--opt 允许同时多个附加的参数
-p 指定连接时的口令
-q 不使用缓冲区直接备份至硬盘,这对于要备份的数据库比较大时非常有用
-u 指定连接时使用的用户名
接下来我们以一个简单的例子来说明mysqldump的使用方法:
(1)将test数据库中所有表格全部导出至/tmp/test.bak中,因为mysqldump导出数据时是接输出至控制台的,我们要将它所输出的数据转存至文件就需要使用重定向命令">"。注意,如果root用户已经设置了口令,则需要输入口令才可以导出。
# /usr/local/servers/mysql/bin/mysqldump -u root -p test > /tmp/test.bak
数据导出之后使用vi /tmp/test.bak或者less /tmp/test.bak就可以查看到导出的数据。
(2)将mysql数据库中的db表的结构导出至/tmp/mysql.db.str中
# /usr/local/servers/mysql/bin/mysqldump -d -u root -p mysql db > /tmp/mysql.db.str
(3)将mysql数据库中所有表格的数据(不包括结构)都导出至/tmp/mysql.data中
# /usr/local/servers/mysql/bin/mysqldump -t -u root -p mysql > /tmp/mysql.data
注意,mysql数据库中存放在关于MySQL数据库服务器的权限信息,在做完试验之后应该立即将/tmp/test.bak、/tmp/mysql.db.str、/tmp/mysql.data删除,以免造成安全隐患
4.6.MySQL的权限控制及用户管理
MySQL使用了一个独立的数据库用于存储用户的权限信息,可以提供细至每个操作的权限控制。这为精确的控制用户的权限提供了便利,同时也给用户的管理增加了复繁性。由篇幅有限,这里我们只能简单的讲一些权限控制的技巧。
MySQL的权限主要由两部分构成,这两部分分别存放于两个表user和db里面。
user表主要用来存放用户名、密码、用户可以从那些主机上登录、权限是否有创建数据库的权限等
db 表主要用来存放用户对具体的某个数据库是否有读取、删除、添加、更新的权限等。
了解了这两个表对权限控制的作用之后要控制具体用户的权限就容易多了。下面我们以一些简单的例子来说明权限控制的方法:
说明:因为这些例子都涉及到权限的更改,所以在做完修改之后都必须使用 flush privileges 命令更新MySQL的权限表。所做的更改才会有以后,同样以后如果自行修改了MySQL的权限表也必须使用flush privileges命令进行更新。同时所有的命令都是以root的身份在mysql命令行工具中执行,启动mysql命令行工具的方法是进入mysql的安装路径/bin内运行./mysql,对于本书来说是 /usr/local/servers/mysql/bin/mysql
1.添加新用户,只允许在本地登录,没有任何权限
INSERT INTO user (Host,User,Password) VALUES
(@#localhost@#,@#mydbuser@#,PASSWORD(@#password@#));
运行此命令之后,将会产品一个名为mydbuser的新用户,其口令为password,只允许在本地计算机中登录,没有任何的权限。
2.添加新用户,允许在任何地方登录,对数据库 test 拥有读取、添加的权限
INSERT INTO user (Host,User,Password) VALUES
(@#%@#,@#mydbuser1@#,PASSWORD(@#password@#));
INSERT INTO db (Host,Db,User,Select_priv,Insert_priv)
VALUES (@#%@#,@#test@#,@#mydbuser1@#,@#Y@#,@#Y@#);
运行这两条命令之后,将会产品一个名为mydbuser1的用户,拥有对数据库test内所有表格读取与添加的权限。
5.Web服务器的安装与Web编程环境的建立
经过4部分的操作,我们的Web站点已经拥有了一个稳定的数据库。接下来就要安装Aache开始提供HTTP服务,同时还需要建议Web编程环境,提供JSP/PHP的支持,以进行动态网站的开发。
1、下载软件包
从 下载Apache 1.3.12
从 下载 resin 1.1.4
从 下载 jdk1.2.2
从 下载mm.mysql-2.0.2-bin.jar
下载的软件包放置于 /usr/local/src。
2、将下载的软件包解压缩
# cd /usr/local/src
# tar zxvf apache_1.3.12.tar.gz
# tar zxvf resin-1.1.3.tar.gz --directory=/usr/local/servers/
5.1.安装Web服务器
以模块化方式编译并安装apache
# cd /usr/local/src/apache_1.3.12
# ./configure --prefix=/usr/local/servers/apache --enable-shared=max
# make
# make install
生成 Apache 启动文件
# cd /etc/rc.d/init.d
# sed @#s/sbin/atd/local/servers/apache/bin/httpd/g@# atd > httpd
# sed @#s/atd/httpd/g@# httpd > /tmp/txt
# sed @#s/at daemon/httpd daemon/g@# /tmp/txt > httpd
# rm /tmp/txt
# chmod 755 httpd
# chkconfig --level 345 httpd on
# chkconfig --level 0126 httpd off
修改Apache配置文件
在缺省的情况下Apache不会设置ServerName这个参数,而需要我们手工设置,方法如下:
# cd /usr/local/servers/apache/conf
使用vi打开httpd.conf,搜索ServerName变量,将其修改为 ServerName 。其中是我们的WEB服务器的域名。
启动并测试Apache服务器
# /etc/rc.d/init.d/httpd start
如果出现:
Starting httpd daemon: [ OK ]
则证明 httpd 已经正确的安装并已经在后台运行,如果出现其它的提示,请检查您的安装步骤是否正确。
使用 lynx localhost 查看Apache的缺省页面,正常情况下是可以查看到的。如果没有出现页面或者提示错误信息,请您检查Apache是否已经在运行,同时httpd.conf中的DocumentRoot参数指向的路径是否允许任何人读取与运行(权限为rx)。
到了这一步,我们已经成功的以DSO方式安装了Apache ,我们的Web服务器可以开始提供静态的页面了,下一步我们就要开始加入JSP、PHP的支持。以使我们的Web服务器可以提供动态页面的服务。
使Apache支持基于域名的
Apache的支持有两种方式,一是基于用户访问Apache主机时所使用的域名,另一种是通过指定IP地址来提供。这里我们只讲解如何通过不同的域名来实现的支持。
要实现基于域名的的前提条件是必须有两个域名同时指向Apache主机的IP地址,这里我们假设这两个域名分别是和这两个域名的文档都分别放置于 /home/linuxaid.com.cn 和 /home/linuxaid.net.cn这两个目录内,同时这两个目录已经设置好权限,对于目录让所有的人都可以读取、运行,对于文件,让所有的人都可以读取。
以下是具体的配置:
NameVirtualHost 202.99.11.120 #告诉Apache,在202.99.11.120这个IP上处理
#基于域名的
<VirtualHost 202.99.11.120>
ServerAdmin #指定WEB管理员的邮箱
DocumentRoot /home/linxuaid.com.cn #指定本的文档目录
ServerName #指定本的域名
ErrorLog logs/linxuaid.com.cn.error.log #指定错误记录应该存放于那里
CustomLog logs/linxuaid.com.cn.log #指定常规记录应该存放于那里
</VirtualHost>
<VirtualHost 202.99.11.120>
ServerAdmin #指定WEB管理员的邮箱
DocumentRoot /home/linuxaid.net.cn #指定本的文档目录
ServerName #指定本的域名
ErrorLog logs/linuxaid.net.cn.error.log #指定错误记录应该存放于那里
CustomLog logs/linuxaid.net.cn.log #指定常规记录应该存放于那里
</VirtualHost>
将以上的指令输入至httpd.conf之后,重新启动apache,使用访问时将可以得到 /home/linuxaid.com.cn中的内容,而使用访问时则可以得到/home/linuxaid.net.cn中的内容。如果的内容与的内容相同,只要将DocumentRoot后目录改为相当就可以了。如果也希望linuxaid.com.cn能访问,还需要再定义一次,这样写ServerName linuxaid.net.cn就可以了。