LAMP
LAMP是目前最为成熟的一种企业网站应用模式,可以提供站点应用及开发环境
构成组件:Linux Apache MySQL PHP/Perl/Pyhon
安装环境
需要开发工具和开发库支持
[root@localhost ~]# tar zxvf httpd-2.2.9.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/httpd-2.2.9/
[root@localhost httpd-2.2.9]# ./configure --prefix=/usr/local/apache2 --enable-so --enable-rewrite --enable-ssl --with-ssl=/usr/lib --enable-auth-digest --enable-cgi --enable-suexec --with-suexec-caller=daemon --with-suexec-docroot=/usr/local/apache2/htdocs
--enable-ssl:开启ssl
--enable-auth-digest:apache有两种认证:基本和摘要,这里选择摘要认证
--enable-cgi:启用cgi功能
--enable-suexec:启用suexec,postfix 要用到
……..//省略显示
config.status: creating docs/conf/extra/httpd-manual.conf
config.status: creating docs/conf/extra/httpd-mpm.conf
config.status: creating docs/conf/extra/httpd-multilang-errordoc.conf
config.status: creating docs/conf/extra/httpd-ssl.conf
config.status: creating docs/conf/extra/httpd-userdir.conf
config.status: creating docs/conf/extra/httpd-vhosts.conf
config.status: creating include/ap_config_layout.h
config.status: creating support/apxs
config.status: creating support/apachectl
config.status: creating support/dbmmanage
config.status: creating support/envvars-std
config.status: creating support/log_server_status
config.status: creating support/logresolve.pl
config.status: creating support/phf_abuse_log.cgi
config.status: creating support/split-logfile
config.status: creating build/rules.mk
config.status: creating build/pkg/pkginfo
config.status: creating build/config_vars.sh
config.status: creating include/ap_config_auto.h
config.status: executing default commands
[root@localhost httpd-2.2.9]# make
…..//省略显示信息
.9/srclib/apr/libapr-1.la -luuid -lrt -lcrypt -lpthread -ldl
cd support && make suexec
make[2]: Entering directory `/usr/src/httpd-2.2.9/support'
/usr/src/httpd-2.2.9/srclib/apr/libtool --silent --mode=compile gcc -g -O2 -pthread -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -I/usr/src/httpd-2.2.9/srclib/pcre -I. -I/usr/src/httpd-2.2.9/os/unix -I/usr/src/httpd-2.2.9/server/mpm/prefork -I/usr/src/httpd-2.2.9/modules/http -I/usr/src/httpd-2.2.9/modules/filters -I/usr/src/httpd-2.2.9/modules/proxy -I/usr/src/httpd-2.2.9/include -I/usr/src/httpd-2.2.9/modules/generators -I/usr/src/httpd-2.2.9/modules/mappers -I/usr/src/httpd-2.2.9/modules/database -I/usr/src/httpd-2.2.9/srclib/apr/include -I/usr/src/httpd-2.2.9/srclib/apr-util/include -I/usr/src/httpd-2.2.9/modules/proxy/../generators -I/usr/lib/include -I/usr/kerberos/include -I/usr/src/httpd-2.2.9/modules/ssl -I/usr/src/httpd-2.2.9/modules/dav/main -prefer-non-pic -static -c suexec.c && touch suexec.lo
/usr/src/httpd-2.2.9/srclib/apr/libtool --silent --mode=link gcc -g -O2 -pthread -L/usr/lib -o suexec suexec.lo
make[2]: Leaving directory `/usr/src/httpd-2.2.9/support'
make[1]: Leaving directory `/usr/src/httpd-2.2.9'
[root@localhost httpd-2.2.9]# make install
…….//省略显示信息
make[2]: Leaving directory `/usr/src/httpd-2.2.9/support'
Installing configuration files
mkdir /usr/local/apache2/conf
mkdir /usr/local/apache2/conf/extra
mkdir /usr/local/apache2/conf/original
mkdir /usr/local/apache2/conf/original/extra
Installing HTML documents
mkdir /usr/local/apache2/htdocs
Installing error documents
mkdir /usr/local/apache2/error
Installing icons
mkdir /usr/local/apache2/icons
mkdir /usr/local/apache2/logs
Installing CGIs
mkdir /usr/local/apache2/cgi-bin
Installing header files
Installing build system files
Installing man pages and online manual
mkdir /usr/local/apache2/man
mkdir /usr/local/apache2/man/man1
mkdir /usr/local/apache2/man/man8
mkdir /usr/local/apache2/manual
make[1]: Leaving directory `/usr/src/httpd-2.2.9'
[root@localhost httpd-2.2.9]# cd
[root@localhost ~]# /usr/local/apache2/bin/apachectl start
[root@localhost ~]# cp /usr/local/apache2/bin/apachectl /etc/init.d/httpd
[root@localhost ~]# service httpd restart
[root@localhost ~]# chkconfig --add httpd
httpd 服务不支持 chkconfig
[root@localhost ~]# vim /etc/init.d/httpd
#!/bin/sh
#chkconfig: 35 85 15
#description: New HTTP Server Daemon
[root@localhost ~]# chkconfig --add httpd
[root@localhost ~]# chkconfig --list httpd
httpd 0:关闭 1:关闭 2:关闭 3:启用 4:关闭 5:启用 6:关闭
MySQL编译安装
[root@localhost ~]# useradd -u 400 -M -s /sbin/nologin mysql //创建MySQL的运行身份
[root@localhost ~]# tail -1 /etc/passwd //查看passwd
mysql:x:400:400::/home/mysql:/sbin/nologin
[root@localhost ~]# tar zxvf mysql-5.0.56.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/mysql-5.0.56/
[root@localhost mysql-5.0.56]# ./configure --prefix=/usr/local/mysql
……//省略显示信息
config.status: creating read/Makefile
config.status: creating rem/Makefile
config.status: creating row/Makefile
config.status: creating srv/Makefile
config.status: creating sync/Makefile
config.status: creating thr/Makefile
config.status: creating trx/Makefile
config.status: creating usr/Makefile
config.status: creating ib_config.h
config.status: ib_config.h is unchanged
config.status: executing depfiles commands
MySQL has a Web site at http://www.mysql.com/ which carries details on the
latest release, upcoming features, and other information to make your
work or play with MySQL more productive. There you can also find
information about mailing lists for MySQL discussion.
Remember to check the platform specific part of the reference manual for
hints about installing MySQL on your platform. Also have a look at the
files in the Docs directory.
Thank you for choosing MySQL!
[root@localhost mysql-5.0.56]# make
……..//省略显示信息
then mv -f ".deps/parse_output.Tpo" ".deps/parse_output.Po"; else rm -f ".deps/parse_output.Tpo"; exit 1; fi
/bin/sh ../../libtool --preserve-dup-deps --tag=CXX --mode=link g++ -O3 -DDBUG_OFF -fno-implicit-templates -fno-exceptions -fno-rtti -rdynamic -o mysqlmanager command.o mysqlmanager.o manager.o log.o thread_registry.o listener.o protocol.o mysql_connection.o user_map.o messages.o commands.o instance.o instance_map.o instance_options.o buffer.o parse.o guardian.o parse_output.o liboptions.la libnet.a ../../vio/libvio.a ../../mysys/libmysys.a ../../strings/libmystrings.a ../../dbug/libdbug.a -lz -lpthread -lcrypt -lnsl -lm -lpthread
g++ -O3 -DDBUG_OFF -fno-implicit-templates -fno-exceptions -fno-rtti -rdynamic -o mysqlmanager command.o mysqlmanager.o manager.o log.o thread_registry.o listener.o protocol.o mysql_connection.o user_map.o messages.o commands.o instance.o instance_map.o instance_options.o buffer.o parse.o guardian.o parse_output.o ./.libs/liboptions.a -lpthread -lpthread -lpthread -lpthread libnet.a ../../vio/libvio.a ../../mysys/libmysys.a ../../strings/libmystrings.a ../../dbug/libdbug.a -lz -lpthread -lcrypt -lnsl -lm -lpthread
make[3]: Leaving directory `/usr/src/mysql-5.0.56/server-tools/instance-manager'
make[3]: Entering directory `/usr/src/mysql-5.0.56/server-tools'
make[3]: Nothing to be done for `all-am'.
make[3]: Leaving directory `/usr/src/mysql-5.0.56/server-tools'
make[2]: Leaving directory `/usr/src/mysql-5.0.56/server-tools'
make[1]: Leaving directory `/usr/src/mysql-5.0.56'
[root@localhost mysql-5.0.56]# make install
…..//省略显示信息
Making install in instance-manager
make[3]: Entering directory `/usr/src/mysql-5.0.56/server-tools/instance-manager'
make[4]: Entering directory `/usr/src/mysql-5.0.56/server-tools/instance-manager'
test -z "/usr/local/mysql/libexec" || mkdir -p -- "/usr/local/mysql/libexec"
/bin/sh ../../libtool --preserve-dup-deps --mode=install /usr/bin/install -c 'mysqlmanager' '/usr/local/mysql/libexec/mysqlmanager'
/usr/bin/install -c mysqlmanager /usr/local/mysql/libexec/mysqlmanager
make[4]: Nothing to be done for `install-data-am'.
make[4]: Leaving directory `/usr/src/mysql-5.0.56/server-tools/instance-manager'
make[3]: Leaving directory `/usr/src/mysql-5.0.56/server-tools/instance-manager'
make[3]: Entering directory `/usr/src/mysql-5.0.56/server-tools'
make[4]: Entering directory `/usr/src/mysql-5.0.56/server-tools'
make[4]: Nothing to be done for `install-exec-am'.
make[4]: Nothing to be done for `install-data-am'.
make[4]: Leaving directory `/usr/src/mysql-5.0.56/server-tools'
make[3]: Leaving directory `/usr/src/mysql-5.0.56/server-tools'
make[2]: Leaving directory `/usr/src/mysql-5.0.56/server-tools'
make[1]: Leaving directory `/usr/src/mysql-5.0.56'
You have mail in /var/spool/mail/root
建立配置文件:在展开的源代码包目录中的“support-files”文件夹下,提供了多个MySQL服务器的配置样例文件,分别适用于不同负载的数据库服务器。一般选择my-medium.cnf文件即可,该配置文件适用于中等负载的数据库,可以满足大多数企业的应用需求
[root@localhost mysql-5.0.56]# cp support-files/my-medium.cnf /etc/my.cnf
初始化数据库:以mysql用户的身份执行mysql_install_db脚本,对MySQL数据库进行初始化。修改相关的所有权,以便mysql用户读写数据库
[root@localhost mysql-5.0.56]# /usr/local/mysql/bin/mysql_install_db --user=mysql
……//省略显示信息
You can start the MySQL daemon with:
cd /usr/local/mysql ; /usr/local/mysql/bin/mysqld_safe &
You can test the MySQL daemon with mysql-test-run.pl
cd mysql-test ; perl mysql-test-run.pl
Please report any problems with the /usr/local/mysql/bin/mysqlbug script!
The latest information about MySQL is available on the web at
http://www.mysql.com
Support MySQL by buying support/licenses at http://shop.mysql.com
[root@localhost mysql-5.0.56]# chown -R root.mysql /usr/local/mysql/ //修改目录的所有权
[root@localhost mysql-5.0.56]# ls -ld /usr/local/mysql/ //查看结果
drwxr-xr-x 12 root mysql 4096 07-20 20:06 /usr/local/mysql/
[root@localhost mysql-5.0.56]# chown -R mysql /usr/local/mysql/var/ //修改目录的所有权
[root@localhost mysql-5.0.56]# ls -ld /usr/local/mysql/var/ //查看结果
drwx------ 4 mysql mysql 4096 07-20 20:06 /usr/local/mysql/var/
调整lib库路径:由于MySQL安装到了非标准的路径中。所以还需要将MySQL的库文件路径“/usr/local/mysql/lib/mysql”加入到系统的库文件搜索路径中,以便在用到时能够自动搜索到。增加库文件搜索路径可以通过修改“/etc/ld.so.conf”文件实现
[root@localhost mysql-5.0.56]# echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf
[root@localhost mysql-5.0.56]# ldconfig //刷新库文件搜索路径,使修改生效
MySQL启动控制
在“/usr/local/mysql/bin”目录中存放着管理MySQL服务器的脚本和程序。其中脚本文件mysqld_safe可以用来安全启动MySQL服务器,结合命令选项“--user”可指定运行服务的用户身份。MySQL服务器默认使用TCP 3306端口提供服务。
[root@localhost mysql-5.0.56]# /usr/local/mysql/bin/mysqld_safe --user=mysql & //&的作用是后台
[root@localhost mysql-5.0.56]# netstat -ntpl | grep 3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 16439/mysqld
如果需要修改mysqld服务监听的端口,可以编辑“/ect/my.cnf”配置文件,根据需要修改“[mysqld]”配置段中的“port”行,例如改为“port=12345”
将mysqld添加为系统服务
在展开的MySQL源码包目录中的“support-files”文件夹下,“mysql.server”文件可用来作为mysqld服务器的启动脚本。将其复制到“/etc/init.d/”目录,并注意添加执行权限(否则在执行“service mysqld start”时系统会提示“mysqld:unrecognized service”)使用带“--add”选项的chkconfig命令将其设为系统自动启动服务即可。
[root@localhost mysql-5.0.56]# cp support-files/mysql.server /etc/init.d/mysqld
[root@localhost mysql-5.0.56]# chmod +x /etc/init.d/mysqld
[root@localhost mysql-5.0.56]# service mysqld restart
Shutting down MySQL [确定]
Starting MySQL [确定]
[root@localhost mysql-5.0.56]# chkconfig --add mysqld
[root@localhost mysql-5.0.56]# chkconfig --level 35 mysqld on
[root@localhost mysql-5.0.56]# chkconfig --list mysqld
mysqld 0:关闭 1:关闭 2:关闭 3:启用 4:关闭 5:启用 6:关闭
以后就可以分别使用 “start”“stop”“restart”差数的service命令来启动,关闭及重启mysqld服务
设置MySQL程序的执行路径
为了在执行“mysql”命令和脚本工具时输入更加方便,可以修改PATH环境变量,添加执行路径“/usr/local/mysql/bin”,并将相关设置定义到系统的“/etc/profile”文件中去。
[root@localhost mysql-5.0.56]# cd
[root@localhost ~]# export PATH=$PATH:/usr/local/mysql/bin
[root@localhost ~]# echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
数据库基本管理
使用MySQL客户端命令工具“mysql”可以可以连接并登陆到MySQL环境,在带有提示符“mysql>”的交互式命令环境中进行操作。在该操作环境中,输入的每一条数据库管理命令以分号“;”表示结束,可以不区分大小写(但习惯上将SQl语句中的关键字使用大写)。
对于刚初始化完毕的MySQL数据库服务器来说,其管理账号root默认是没有设置密码的。只要直接执行“mysql –u root”命令即以root用户身份登陆本机的MySQL服务器,在“mysql>”环境中,输入“exit”命令即可退出。
[root@localhost ~]# mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.0.56-log Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> exit
Bye
[root@localhost ~]#
为了安全起见,使用mysqladmin命令工具为MySQL数据库的root用户设置一个密码。 再次连接mysqld服务时,需要在“mysql –u root”命令后加上“-p”参数,根据系统提示输入正确的密码后才可以登录,MySQL环境
将root用户的密码设置为“qq123.com”并再次登录mysql服务器。
[root@localhost ~]# mysqladmin -u root password "qq123.com"
[root@localhost ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.0.56-log Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
注意,这个root用户是来自访问mysqld服务的,而不是登录linux系统的root用户
显示数据库结构
SHOW DATABASES语句;用于查看MySQL服务器中包括的数据库列表。经初始化后的MySQL服务器,默认建立了三个数据库“tast,mysql,information_schema”
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| test |
+--------------------+
3 rows in set (0.00 sec)
mysql>
查看数据库中的数据表信息
SHOW TABLES语句:用于显示当前数据库中包含 的数据表。在显示数据表之前,需要先使用“USE”语句切换到所使用的库
切换到mysql。并显示其中包含有哪些数据表
mysql> USE mysql;
Database changed
mysql> SHOW TABLES;
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| db |
| func |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| host |
| proc |
| procs_priv |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+---------------------------+
17 rows in set (0.00 sec)
MySQL数据库的数据文件存储在目录“/usr/local/mysql/var/”中,每个数据库对应一个目录,用于存放数据表文件,每一个数据表为三个文件,后缀名分别为“.frm”“.MYD”“.MYI”。
查看数据库mysql中的user表对应的文件数据
[root@localhost ~]# ls /usr/local/mysql/var/mysql | grep user
user.frm
user.MYD
user.MYI
[root@localhost ~]#
显示数据表的结构
DESCRLBE语句:用于显示数据表中列表的信息(或者表结构),以“数据库名.表名”作为参数,命令格式为:
DESCRIBE [数据库名.]表名
当省略数据库名时,则认为是查询当前数据库中的表
mysql> USE mysql;
Database changed
mysql> DESCRIBE user;
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Host | char(60) | NO | PRI | | |
| User | char(16) | NO | PRI | | |
| Password | char(41) | NO | | | |
| Select_priv | enum('N','Y') | NO | | N | |
| Insert_priv | enum('N','Y') | NO | | N | |
| Update_priv | enum('N','Y') | NO | | N | |
| Delete_priv | enum('N','Y') | NO | | N | |
| Create_priv | enum('N','Y') | NO | | N | |
| Drop_priv | enum('N','Y') | NO | | N | |
| Reload_priv | enum('N','Y') | NO | | N | |
| Shutdown_priv | enum('N','Y') | NO | | N | |
| Process_priv | enum('N','Y') | NO | | N | |
| File_priv | enum('N','Y') | NO | | N | |
| Grant_priv | enum('N','Y') | NO | | N | |
| References_priv | enum('N','Y') | NO | | N | |
| Index_priv | enum('N','Y') | NO | | N | |
| Alter_priv | enum('N','Y') | NO | | N | |
| Show_db_priv | enum('N','Y') | NO | | N | |
| Super_priv | enum('N','Y') | NO | | N | |
| Create_tmp_table_priv | enum('N','Y') | NO | | N | |
| Lock_tables_priv | enum('N','Y') | NO | | N | |
| Execute_priv | enum('N','Y') | NO | | N | |
| Repl_slave_priv | enum('N','Y') | NO | | N | |
| Repl_client_priv | enum('N','Y') | NO | | N | |
| Create_view_priv | enum('N','Y') | NO | | N | |
| Show_view_priv | enum('N','Y') | NO | | N | |
| Create_routine_priv | enum('N','Y') | NO | | N | |
| Alter_routine_priv | enum('N','Y') | NO | | N | |
| Create_user_priv | enum('N','Y') | NO | | N | |
| ssl_type | enum('','ANY','X509','SPECIFIED') | NO | | | |
| ssl_cipher | blob | NO | | NULL | |
| x509_issuer | blob | NO | | NULL | |
| x509_subject | blob | NO | | NULL | |
| max_questions | int(11) unsigned | NO | | 0 | |
| max_updates | int(11) unsigned | NO | | 0 | |
| max_connections | int(11) unsigned | NO | | 0 | |
| max_user_connections | int(11) unsigned | NO | | 0 | |
+-----------------------+-----------------------------------+------+-----+---------+-------+
37 rows in set (0.03 sec)
mysql>
创建新的数据库
CREATE DATABASE语句;用于创建一个新的数据库,使用数据库名称作为参数
命令格式为:CREATE DATABASE 数据库名
创建一个名为“auth”的数据库
mysql> CREATE DATABASE auth;
Query OK, 1 row affected (0.06 sec)
mysql>
创建新的数据库需要有足够的权限,且数据库名称必须唯一。刚建立的数据库是空的不包含任何表,在“/usr/local/mysql/var”目录下会对应有一个与数据库名称相同的目录
创建新的数据表
CREATE TABLE语句:用于在数据库中创建新的数据表,需要使用数据表名称作为参数。命令格式为
CREATE TABLE 表名 (字段定义……..)
例如:在auth库中创建一个名为users的表。包括两字段user_name,user_passwd,均为非空字符串值,初始化密码值设为“123456”其中user_name字段被设置为关键索引字段(PRIMARY KEY)。
mysql> USE auth;
Database changed
mysql> CREATE TABLE users (user_name CHAR(30) NOT NULL, user_passwd CHAR(20) NOT NULL DEFAULT '123456', PRIMARY KEY (user_name));
Query OK, 0 rows affected (0.00 sec)
删除一个数据表
DROP TABLE语句:用于在数据库中删除指定的数据表,需要使用数据表名称作为参数,命令格式为:
DROP TABLE [数据库名.]表名
mysql> DROP TABLE auth.users;
Query OK, 0 rows affected (0.01 sec)
mysql>
删除一个数据库
DROP DATABASE语句:用于删除指定的数据库,需要使用数据库名称作为参数,命令格式为:
DROP DATABASE 数据库名
删除auth数据库
mysql> DROP DATABASE auth;
Query OK, 0 rows affected (0.02 sec)
数据录入与维护
例:创建auth数据库和users表下面将以此为基础,学习如何使用INSERT, SELECT, UPDATE, DELETE语句向数据库表中插入,查询, 修改,及删除数据记录。
(1)插入新的数据记录
INSERT语句:用于向数据库 中插入新的数据记录,命令格式为:
INSERT INTO 表名(字段1,字段2,……) VALUES(字段1的值,字段2的值,…………);
在auth库下的users表中插入两个用户zhangsan,lisi的记录,密码分别为“123456”“654321”
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| test |
+--------------------+
3 rows in set (0.00 sec)
mysql> CREATE DATABASE auth;
Query OK, 1 row affected (0.00 sec)
mysql> USE auth;
Database changed
mysql> CREATE TABLE users (user_name CHAR(30) NOT NULL, user_passwd CHAR(20) NOT NULL DEFAULT '123456', PRIMARY KEY (user_name));
Query OK, 0 rows affected (0.01 sec)
mysql> INSERT INTO auth.users(user_name,user_passwd) VALUES('zhangsan', ENCRYPT('123456'));
Query OK, 1 row affected (0.03 sec)
mysql> INSERT INTO auth.users(user_name,user_passwd) VALUES('lisi', ENCRYPT('654321'));
Query OK, 1 row affected (0.00 sec)
mysql>
查询数据记录
SELECT语句:用于从数据表中查 找符合条件的数据记录,MySQL数据库支持标准的SQL查询语句。命令格式为:
SELECT 字段名1,字段名2……… FROM 表名 WHERE 条件表达式
表示所有字段时可以使用通配符“*”,不指定特定条件时可以省略“WHERE”部分
例:在auth库的users表中,查看所有的数据记录
mysql> SELECT * FROM auth.users;
+-----------+---------------+
| user_name | user_passwd |
+-----------+---------------+
| zhangsan | 0044EOfKxmlX2 |
| lisi | a1oBMa2vswboc |
+-----------+---------------+
2 rows in set (0.00 sec)
mysql>
密码字段的值显示为加密的字符串信息
在auth库的users表中,查询用户名为“zhangsan”的记录,输出用户名,密码字段
mysql> SELECT user_name,user_passwd FROM auth.users WHERE user_name='zhangsan';
+-----------+---------------+
| user_name | user_passwd |
+-----------+---------------+
| zhangsan | 0044EOfKxmlX2 |
+-----------+---------------+
1 row in set (0.00 sec)
mysql>
修改数据库记录
UPDATE语句:用于修改。更新数据表中的数据记录。命令格式为:
UPDATE 表名 SET 字段名1=字段值1[字段名2=字段值2] WHERE 条件表达式
例:将数据库用户lisi的密码改为“123456”
mysql> UPDATE auth.users SET user_passwd=ENCRYPT('123456') WHERE user_name='lisi';
Query OK, 1 row affected (0.02 sec)
Rows matched: 1 Changed: 1 Warnings: 0
更改root管理员的密码,更改完执行“FLUSH PRIVILEGES”语句刷新用户授权信息
mysql> UPDATE mysql.user SET password=password('123456') WHERE user='root';
Query OK, 3 rows affected (0.01 sec)
Rows matched: 3 Changed: 3 Warnings: 0
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
删除数据库记录
DELETE FROM 表名WHERE 条件表达式
例:在auth库的users表中,删除name字段的值为“lisi”的数据记录
mysql> DELETE FROM auth.users WHERE user_name='lisi';
Query OK, 1 row affected (0.01 sec)
为了安全删除MySQL的空用户
mysql> DELETE FROM mysql.user WHERE User='';
Query OK, 2 rows affected (0.00 sec)
维护数据库及用户权限
数据库的备份与恢复
及时备份数据库是信息安全管理的重要工作内容之一。MySQL数据备份可以使用多种方式,直接备份数据库目录“/var/local/mysqlvar”是一种比较快捷的方式,而更广泛使用的做法是使用mysqldump命令来完成备份
使用mysqldump命令可将数据库信息导出为SQL脚本,这样的脚本文件还能够在不同版本的MySQL服务器上使用。例如,当需要升级MySQL数据库软件的版本时,使用mysqldump命令将原有数据库信息导出, 直接在更新后的MySQL服务器中导入即可
mysqldump命令可以完成全部数据库,指定数据库,数据表的备份。命令格式为:
mysqldump –u 用户名 –p [密码] [options] [表名] > /备份路径/备份文件名
备份整个auth数据库
[root@localhost ~]# mysqldump -u root -p auth > mysql-auth.sql
Enter password:
[root@localhost ~]# ll mysql-auth.sql
-rw-r--r-- 1 root root 1826 01-18 17:19 mysql-auth.sql
备份数据库mysql中的user表,host表。
[root@localhost ~]# mysqldump -u root -p mysql host user > mysql.host-user.sql
Enter password:
[root@localhost ~]# ll mysql.host-user.sql
-rw-r--r-- 1 root root 6742 01-18 17:21 mysql.host-user.sql
备份MySQL服务器中所有数据库的内容(添加“—all-datebases”),当需要备份的信息较多时可以添加“--opt”选项进行优化,以较快备份速度
[root@localhost ~]# mysqldump -u root -p --all-databases > mysql-all.sql
Enter password:
[root@localhost ~]# ll mysql-all.sql
-rw-r--r-- 1 root root 398694 01-18 17:27 mysql-all.sql
恢复数据库
对于使用mysqldump命令导出的备份文件,在需要 恢复时可以直接通过mysql命令进行倒入。使用mysql命令导入.sql脚本文件,命令格式为
mysql –u root –p [数据库名] < /备份路径/备份文件名
备份文件mysql-all.sql包括所有的(或多个)数据库信息时,执行mysql导入时可以不指定数据库名
[root@localhost ~]# mysql -u root -p < mysql-all.sql
Enter password:
备份文件之包括单个数据库或单个数据表时,执行mysql导入时需要指定目标数据库的名称
[root@localhost ~]# mysql -u root -p < mysql-auth.sql //没有指定数据库出现错误如下
Enter password:
ERROR 1046 (3D000) at line 18: No database selected
[root@localhost ~]# mysql -u root -p auth < mysql-auth.sql
Enter password:
[root@localhost ~]# mysql -u root -p mysql < mysql.host-user.sql
Enter password:
用户及权限设置
MySQL数据库用户的全新管理主要包括三个方面:授予权限,查看权限,撤销权限
授予权限
GRANT语句使用来创建用户并进行授权的最常用语句。当指定的用户名不存在时GRANT语句将会创建新的用户,否则用于修改用户信息。命令格式为:
GRANT 权限列表 ON 数据库名.表名 TO 用户名@来源地址 [ IDENTIFIED BY ‘密码’ ]
使用GRANT语句时,需要注意的事项如下
权限列表:使用“ALL”关键字代表全部权限,同时授予多个权限时,以逗号“,”分隔,例如“select,insert,update,delete”
表名:可使用通配符“*”表示指定数据库中所有数据表
用户名@来源地址:用来设置谁能连接,从哪里连接。用户名不能使用通配符,但使用连续的两单引号“ '’ ”时表示空字符串,可用于匹配任何用户。来源地址表示连接数据库的客户机地址,可以使用“%”作为通配符,匹配某个域内的所有地址(如 %,benet.com),或使用带掩码标记的网络地址(如192.168.1.0/24)。
IDENTIFIED BY:用于设置用户连接数据库时使用的密码字符串,密码进过加密后存储与mysql库的user表中,省略“IDENTIFIED BY”部分时,新用户的密码将为空。
例:授权数据库用户qiao,允许其从本机连接到MySQL服务器,只能查看mysql库中的user表的内容,使用密码‘“123456”进行验证。
mysql> GRANT SELECT ON mysql.user TO qiao@'localhost' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.02 sec)
使用用户qiao的身份连接数据库,当查看非授权的数据表示将被拒绝
[root@localhost ~]# mysql -u qiao -p
Enter password:
……//省略信息
mysql> SELECT * FROM mysql.sb;
ERROR 1142 (42000): SELECT command denied to user 'qiao'@'localhost' for table 'sb'
mysql>
授权数据库用户admin1,允许其从本机连接到MySQL服务器,对auth库中的所有表有完全权限,使用密码“123456”进行验证。
mysql> GRANT ALL ON auth.* TO admin1@'localhost' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.00 sec)
授权数据库用户admin2,允许其从网段192.168.1.0/24种访问MySQL服务器,可以查询auth库中的所有表,使用密码“123456”进行验证。
mysql> GRANT SELECT ON auth.* TO admin2@'192.168.1.0/24' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.00 sec)
授权数据库用户admin3,允许其从bent.com域内的任何主机访问MySQL服务器,对auth库下的所有表具有SELECT,INSERT权限,使用密码“123456”进行验证
mysql> GRANT SELECT,INSERT ON auth.* TO admin3@'%.benet.com' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.00 sec)
查看权限
需要查看用户的权限时,可直接使用SELECT语句对user, db,host, 数据表查询也使用SHOW语句进行查看,后者相对更加简单,命令格式为:
SHOW GRANTS FOR 用户名@域名或IP
查看数据库用户root从服务器本机进行连接时的权限
mysql> SHOW GRANTS FOR root@'localhost';
+----------------------------------------------------------------------------------------------------------------------------------------+
| Grants for root@localhost |
+----------------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' WITH GRANT OPTION |
+----------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
查看数据库用户admin3从benet.com域内的客户机访问MySQL服务时的权限
mysql> SHOW GRANTS FOR admin3@'%.benet.com';
+-----------------------------------------------------------------------------------------------------------------+
| Grants for admin3@%.benet.com |
+-----------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'admin3'@'%.benet.com' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' |
| GRANT SELECT, INSERT ON `auth`.* TO 'admin3'@'%.benet.com' |
+-----------------------------------------------------------------------------------------------------------------+
2 rows in set (0.02 sec)
撤销权限
REVOKE语句:用于撤销指定数据库用户的权限。命令格式为:
REVOKE 权限列表 ON 数据库名.表名 FROM 用户名@域名或IP
撤销数据库用户admin3从benet.com域访问数据库auth的所有权限
mysql> REVOKE ALL ON auth.* FROM admin3@'%.benet.com';
Query OK, 0 rows affected (0.01 sec)
mysql> SHOW GRANTS FOR admin3@'%.benet.com';
+-----------------------------------------------------------------------------------------------------------------+
| Grants for admin3@%.benet.com |
+-----------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'admin3'@'%.benet.com' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' |
+-----------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql>
PHP编译安装
[root@localhost ~]# tar jxvf php-5.2.6.tar.bz2 -C /usr/src/
[root@localhost ~]# cd /usr/src/php-5.2.6/
[root@localhost php-5.2.6]# ./configure --prefix=/usr/local/php5 --enable-mbstring --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql --with-config-file-path=/usr/local/php5
在上述配置命令中,使用了五个命令,其含义如下
--prefix:设置PHP程序的安装路径
--enable-mbstring:设置PHP支持多字节字符串
--with-apxs2:设置Apache服务器提供的apxs模块支持程序的文件位置
--with-mysql:设置MySQL服务器程序的安装位置
--with-config-file-path:设置PHP程序的配置文件所在的位置
…….//省略显示信息
Generating files
updating cache ./config.cache
creating ./config.status
creating php5.spec
creating main/build-defs.h
creating scripts/phpize
creating scripts/man1/phpize.1
creating scripts/php-config
creating scripts/man1/php-config.1
creating sapi/cli/php.1
creating main/php_config.h
creating main/internal_functions.c
creating main/internal_functions_cli.c
+--------------------------------------------------------------------+
| License: |
| This software is subject to the PHP License, available in this |
| distribution in the file LICENSE. By continuing this installation |
| process, you are bound by the terms of this license agreement. |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point. |
+--------------------------------------------------------------------+
Thank you for using PHP.
[root@localhost php-5.2.6]# make
……//省略显示信息
ts.lo Zend/zend_object_handlers.lo Zend/zend_objects_API.lo Zend/zend_default_classes.lo Zend/zend_execute.lo sapi/cli/php_cli.lo sapi/cli/php_cli_readline.lo sapi/cli/getopt.lo main/internal_functions_cli.lo -lcrypt -lcrypt -lrt -lmysqlclient -lresolv -lm -ldl -lnsl -lxml2 -lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -lcrypt -lxml2 -lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -lcrypt -o sapi/cli/php
Build complete.
Don't forget to run 'make test'.
[root@localhost php-5.2.6]# make install
…..//省略显示信息
[activating module `php5' in /usr/local/apache2/conf/httpd.conf]
Installing PHP CLI binary: /usr/local/php5/bin/
Installing PHP CLI man page: /usr/local/php5/man/man1/
Installing build environment: /usr/local/php5/lib/php/build/
Installing header files: /usr/local/php5/include/php/
Installing helper programs: /usr/local/php5/bin/
program: phpize
program: php-config
Installing man pages: /usr/local/php5/man/man1/
page: phpize.1
page: php-config.1
Installing PEAR environment: /usr/local/php5/lib/php/
[PEAR] Console_Getopt - installed: 1.2.3
[PEAR] Archive_Tar - installed: 1.3.2
[PEAR] Structures_Graph- installed: 1.0.2
pear/PEAR can optionally use package "pear/XML_RPC" (version >= 1.4.0)
[PEAR] PEAR - installed: 1.7.1
Wrote PEAR system config file at: /usr/local/php5/etc/pear.conf
You may want to add: /usr/local/php5/lib/php to your php.ini include_path
Installing PDO headers: /usr/local/php5/include/php/ext/pdo/
复制php.ini配置文件
PHP安装程序通常不会复制配置文件,因此还需要复制源码目录中的PHP配置模板文件php.ini-dist,将其复制为PHP配置目录中的php.ini文件即可
[root@localhost php-5.2.6]# cp php.ini-dist /usr/local/php5/php.ini
[root@localhost php-5.2.6]# cd
[root@localhost ~]#
设置httpd.conf文件
PHP程序需要和Web服务器协同工作,才便发挥其强大的作用。因此在编译安装PHP程序以后,还要编辑httpd服务器的主配置文件httpd.conf,添加支持PHP环境的相关配置。
要让httpd服务器支持PHP页面解析功能,可以使用“LoadModule php5_modulemodules/libphp5.so”,如果没有侧手动添加
还需要使用“AddTpe”配置项添加对.php类型的网页的识别。在httpd.conf文件中查找“AddType”关键字,参考相关配置添加配置行“AddType application/x-httpd-php.php”。
编辑httpd.conf文件,确认或添加支持PHP环境的相关配置行
[root@localhost ~]# vim /usr/local/apache2/conf/httpd.conf
//使用:“set nu”命令即可显示行号
……………….
51 # Example:
52 # LoadModule foo_module modules/mod_foo.so
53 LoadModule php5_module modules/libphp5.so //确定有这一行
54 #
55 //其中“php5_modile”是模块名称,“modules/libphp5.so”是模块文件的位置。
165 #
166 <IfModule dir_module>
167 DirectoryIndex index.php index.html //修改这行配置,首页文件
168 </IfModule>
169 //修改“DirectoryIndex”配行,添加“index.php”项,以便httpd服务器能够正确搜索该首页
307 #
308 AddType application/x-compress .Z
309 AddType application/x-gzip .gz .tgz
310 AddType application/x-httpd-php .php //增加这一行,支持php文件识别
[root@localhost ~]# service httpd restart //重新启动httpd服务
测试PHP与Apache的协同工作
编写一个PHP测试网页文件,使用“phpinfo()”函数显示服务器的PHP环境信息
[root@localhost ~]# vim /usr/local/apache2/htdocs/index.php
<?php
phpinfo();
?>
测试PHP与MySQL数据库的协同工作,编写一个PHP测试网页文件,添加简单的数据库操作命令 ,用于验证MySQL服务器的链接,查询操作,如果测试MySQL错误会显示“Fail !!”
[root@localhost ~]# vim /usr/local/apache2/htdocs/testdb.php
<?php
$link=mysql_connect('localhost','test','');
if(!$link) echo "fail !!";
else echo "Success !!";
mysql_close();
?>
架设Discuz!论坛
首先建立用于bbs论坛的数据库(bbsdb)及用户(runbbs)
[root@localhost ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.0.56-log Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> CREATE DATABASE bbsdb;
Query OK, 1 row affected (0.02 sec)
mysql> GRANT all ON bbsdb.* TO runbbs@localhost IDENTIFIED BY 'qq123.com';
Query OK, 0 rows affected (0.00 sec)
mysql> quit
解压软件包,上传文件
使用unzip命令将下载的两个软件包进行解压,将释放出的“upload”目录转移至Web站点的网页文档目录中,并分别改名为bbs,ucenter
[root@localhost ~]# unzip Discuz_6.1.0_SC_UTF8.zip -d discuz
[root@localhost ~]# mv discuz/upload/ /usr/local/apache2/htdocs/bbs
[root@localhost ~]# unzip UCenter_1.0.0_SC_UTF8.zip -d ucenter
[root@localhost ~]# mv ucenter/upload/ /usr/local/apache2/htdocs/ucenter
设置相关目录及文件的属主,以便httpd服务能够对论坛写入数据
[root@localhost ~]# cd /usr/local/apache2/htdocs/ucenter/
[root@localhost ucenter]# chown -R daemon ./data/
[root@localhost ucenter]# cd ../bbs/
[root@localhost bbs]# chown -R daemon config.inc.php attachments/ forumdata/ uc_client/data/cache/
安装Ucenter用户中心程序
在浏览器中访问“http://www.benet.com/ucenter/install/index.php”,根据向导页面的提示进行Ucenter的安装,期间注意设置正确的数据库名,用户名,密码等基本信息,并设置好创始用户(Ucenter Administrator)的密码
确认目录权限设置结果正确
设置数据库名,用户, 密码等信息
设置创始人用户名及密码
进行数据库初始化,并完成安装
成功安装及登陆
登陆界面
安装Discuz!论坛程序,在浏览器中访问http://www.benet.com/bbs/install/index.php根据向导页面提示进行Discuz!论坛的安装
输入创始人密码,设置论坛名称等信息
设置基本信息,设置数据库信息及论坛管理员账号,密码
初始化数据库后,自动跳转至安装完成页面
关于Discuz!论坛的详细安装步骤,可以参考软件包内的“users_guard.html”
使用Discuz!论坛首页
URL地址http://www.benet.com/bbs/index.php进入该页面
转移“install”安装目录
在Discuz!论坛安装完毕后,应及时转移bbs和ucenter目录中的install子目录,以减少被重新安装的风险。
[root@localhost ~]# cd /usr/local/apache2/htdocs/bbs/
[root@localhost bbs]# mv install/ install.lock
[root@localhost bbs]# chmod o+rx install.lock/
[root@localhost bbs]# cd ../ucenter/
[root@localhost ucenter]# mv install/ install.lok
[root@localhost ucenter]# chmod o-rx install.lok/
在浏览器中访问http://www.benet.com//bbs/admincp.php,进入Discuz!论坛的管理中心。使用安装过程中设置的论坛管理员账号,密码进行登陆,即可进入到论坛的后台管理页面
安装phpMyAdmin是一个使用PHP语言编写,通过Web界面对MySQL数据库进行管理的工具,使用phpMyAdmin套件,即便对MySQL语句不太熟悉的人,也可以在浏览器中对MySQL数据库进行管理和维护操作。
解压并释放phpMyAdmin文件包,改名后转移至Web站点的网页文档目录
[root@localhost ~]# tar zxvf phpMyAdmin-2.11.9.5-all-languages.tar.gz
[root@localhost ~]# mv phpMyAdmin-2.11.9.5-all-languages phpMyAdmin
[root@localhost ~]# mv phpMyAdmin /usr/local/apache2/htdocs/
[root@localhost phpMyAdmin]# cp config.sample.inc.php config.inc.php //复制配置样例
[root@localhost phpMyAdmin]# vim config.inc.php
……//省略配置显示
$cfg['blowfish_secret'] = 'asd123'; //查找此行,设置密码
若“blowfish_secret”行的密码为空,则在访问phpMyAdmin登陆页面时会报错“错误:配置文件现在需要绝密的短密码(blowfsh_secret)。
在浏览器中访问http://www.benet.com//phpMyAdmin/index.php,使用MySQL数据库账号进行登陆
在phpMyAdmin的Web页面下方,可能会出现“无法载入mcrtpt拓展,请检查PHP配置”的错误提示信息,这是由于没有mcrypt加密算法扩展库造成的,缺少mcrypt库并不会影响phpMyAdmin的基本使用,可以忽略提示。
MySQL命令
修改管理员的密码和用户登录:
[root@localhost ~]# mysqladmin -u root password "lyaccp" // 设置密码
[root@localhost ~]# mysqladmin -u root -p password "lybenet" // 修改密码
[root@localhost ~]# mysql -u root -p // 登录
[root@localhost ~]# mysql -uroot -plybenet // 登录
[root@localhost ~]# mysql --user=root --password=lybenet // 登录
[root@localhost ~]#
[root@localhost ~]# mysql --user=root --password=lybenet
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.0.56-log Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
查看数据库:
// 查看当前选择的数据库:
mysql> SELECT DATABASE();
// 查看当前登录的数据库用户:
mysql> SELECT USER();
// 查看数据库
[root@localhost ~]# mysqlshow -uroot -p123456 // 用户:root 密码:123456
// 登录后的查看数据库和表
mysql> SHOW DATABASES;
mysql> SHOWTABLES FROM auth; // 查看数据库auth中的表信息,不需切换数据库
mysql> USE mysql; // 切换到数据库mysql
mysql> SHOWTABLES; // 查看数据mysql中的数据表信息
mysql> DESCRIBE user; // 显示数据表user 的结构
创建数据库和表(表名users 和后面括号可以有空格)
mysql> CREATE DATABASE auth;
mysql> USE auth;
mysql> CREATE TABLE users(user_name CHAR(30) NOT NULL, user_passwd CHAR(20)
NOT NULL DEFAULT '123456', PRIMARY KEY (user_name));
Query OK, 0 rows affected (0.04 sec)
// 不需切换数据库,创建表users1
mysql> CREATE TABLE auth.users1(user_name CHAR(30) NOT NULL, user_passwd
CHAR(20) NOT NULL DEFAULT '123456', PRIMARY KEY(user_name));
Query OK, 0 rows affected (0.02 sec)
mysql>
删除表和数据库:
mysql> DROP TABLE auth.users;
mysql> DROP DATABASE auth;
插入数据(表名users和后面括号可以有空格)
// 插入用户张三,密码123,使用encrypt函数加密,不需切换数据库
mysql> INSERT INTO users(user_name,user_passwd) VALUES('zhangsan',ENCRYPT('123'));
Query OK, 1 row affected (0.02 sec)
mysql> INSERT INTO auth.users(user_name,user_passwd) VALUES('lisi',ENCRYPT('123'));
Query OK, 1 row affected (0.00 sec)
查看数据:
mysql> SELECT * FROM auth.users;
mysql> SELECT user_name,user_passwd FROM auth.usersWHERE user_name='zhangsan';
修改数据:
// 修改lisi的密码为456,并且encrypt函数加密
mysql> UPDATE auth.users SET user_passwd=ENCRYPT('456') WHERE user_name='lisi';
// 修改root管理员的密码,使用“FLUSH PRIVILEGES”语句刷新用户授权信息
mysql> UPDATE mysql.user SET password=password('123456')WHERE user='root';
Query OK, 3 rows affected (0.04 sec)
Rows matched: 3 Changed: 3 Warnings: 0
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql>
删除数据:
mysql> DELETE FROM auth.usersWHERE user_name='zhangsan';
Query OK, 1 row affected (0.00 sec)
// 从表users中删除所有信息
mysql> DELETE FROM auth.users;
Query OK, 2 rows affected (0.00 sec)
数据库备份和还原:
// 备份数据库auth
[root@localhost ~]# mysqldump -u root -p auth > mysql-auth.sql
Enter password:
[root@localhost ~]#
// 还原数据库auth(需指定目标数据库auth,如果备份文件有多个数据库,不需指定)
[root@localhost ~]# mysql -u root -p auth < mysql-auth.sql
Enter password:
[root@localhost ~]#
// 备份数据库auth中的表users、users1和还原表(必需指定目标数据库)
[root@localhost ~]# mysqldump -u root -p auth users users1 > mysql-auth.users.sql
Enter password:
[root@localhost ~]# mysql -u root -p auth < mysql-auth.users.sql
Enter password:
// 备份所有数据库和还原
[root@localhost ~]# mysqldump -u root -p --all-databases > mysql-all.sql
Enter password:
[root@localhost ~]# mysql -u root -p < mysql-all.sql
Enter password:
用户及权限设置:
// 授权数据库用户tom从本机访问MySQL服务器
mysql> GRANT ALL ON auth.* TO tom@'localhost' IDENTIFIED BY '123';
Query OK, 0 rows affected (0.00 sec)
// 授权数据库用户john从10.0.0.0/8 网络中连接到MySQL服务器,对auth数据库中所有表
拥有完全权限
mysql> GRANT ALL ON auth.* TO john@'10.0.0.0/8' IDENTIFIED BY '123';
Query OK, 0 rows affected (0.00 sec)
// 查看当前用户的权限:
mysql> SHOW GRANTS;
// 查看tom用户从本机连接是的权限
mysql> SHOW GRANTS FOR tom@localhost;
// 撤销用户tom从本机访问数据库auth的所有权限
mysql> REVOKE ALL ON auth.* FROM tom@'localhost';
Query OK, 0 rows affected (0.00 sec)
// 查看数据库auth中所有授权的用户
mysql> SELECT host,user,db FROM mysql.dbWHERE db='auth';