您所在的位置:读书频道 > 操作系统 > Linux > 18.3.5 MySQL数据库的启动与测试

18.3.5 MySQL数据库的启动与测试

2007-12-05 14:24 鸟哥 机械工业出版社华章公司 字号:T | T
一键收藏,随时查看,分享好友!

《鸟哥的Linux私房菜——服务器架设篇》(第二版)第18章的主要介绍的是WWW服务器。本文主要介绍的是MySQL数据库的启动与测试。

AD:

18.3.5  MySQL数据库的启动与测试

虽然已经启动基本的Apache以及PHP模块,不过,数据库还尚未启动。在本小节里就来启动一下MySQL。在启动MySQL前系统并没有建立任何的数据库。当初次启动MySQL后,系统才会针对数据库进行初始化的建立。不相信的话您可以先看看/var/lib/mysql目录,里面没有任何数据。

1. 启动MySQL(设置MySQL root密码与新增MySQL用户账号)

首先启动MySQL,启动的方法很简单。

[root@linux ~]# /etc/init.d/mysqld start
# 如果是初次使用这个指令来启动,您的/var/lib/mysql会建立数据库

[root@linux ~]# netstat -tuln | grep ':3306'
tcp  0      0 0.0.0.0:3306   0.0.0.0:*   LISTEN

# 下面测试能否以手动的方式连上MySQL数据库
[root@linux ~]# mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2 to Server version: 4.1.20

Type 'help;' or '\h' for help. Type '' to clear the buffer.

mysql> quit
Bye

MySQL默认监听的端口在3306,从以上代码来看MySQL似乎已经启动,不过刚刚初始化的MySQL数据库并没有任何密码,所以很可能数据库会被用户搞乱。最好对MySQL设置一下密码。另外,上面那个root与Linux账号的root是完全无关的。因为MySQL数据库软件也是多人的操作环境,在该软件内有个管理者账号也恰好是root而已。

那么如何针对MySQL软件内的root管理者设置它的密码呢?可以进行如下操作:

[root@linux ~]# mysqladmin -u root password 'your.password'
# 从此以后MySQL的root账号就需要密码

[root@linux ~]# mysql -u root -p
Enter password:  <==需要在这里输入刚刚建立的密码
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4 to Server version: 4.1.20

Type 'help;' or '\h' for help. Type '' to clear the buffer.

mysql>quit

如此一来MySQL数据库会比较安全。其实更好的办法是分别建立不同的用户管理不同的数据库。例如,如果要给予dmtsai这个用户一个MySQL的数据库使用权,假设要给它的数据库名称为dmtsai,那么可以进行以下操作:

[root@linux ~]# mysql -u root -p
Enter password:  <==如前所述,需要输入密码
mysql> create database dmtsai;  <==注意每个指令后面都要加上分号 (;)
Query OK, 1 row affected (0.01 sec)

mysql> grant all privileges on dmtsai.* to dmtsai@localhost 
identified by 'your.password' ;
Query OK, 0 rows affected (0.00 sec)

mysql> show databases;
+----------+
| Database |
+----------+
| dmtsai   |  <==看到了吗?多了一个数据库
| mysql    |  <==主要用来记录MySQL的账号、主机等重要信息的主要数据库
| test     |
+----------+
3 rows in set (0.00 sec)

mysql> exit

然后可以利用“mysql-u dmtsai-p”指令来尝试登录MySQL,即可知道dmtsai用户在MySQL里拥有一个名称为dmtsai的数据库了。其他更多的用法请您自行参考SQL相关的语法,这里不再详述。

2. 效率调校 /etc/my.cnf

如果MySQL数据库系统有很多用户同时联机的话,可能会造成某些效率方面的瓶颈,不过,可以通过简单的设置来进一步处理MySQL数据库。相关的数据可以参考“http://parus.idv.tw/wp/?p=131”中的说明。

[root@linux ~]# vi /etc/my.cnf
[mysqld]
default-storage-engine=innodb
# 关于目录数据与语言的设置
datadir                =/var/lib/mysql
socket                 =/var/lib/mysql/mysql.sock
default-character-set  =utf8   <==每个人的编码都不相同,不要随意修改
port                   =3306
skip-locking
# 关于内存的设置,注意,内存的简单计算方式为
# key_buffer + (sort_buffer + read_buffer ) * max_connection
# 且总量不可高于实际的物理内存量。所以,下面的数据应该是没有问题的
# 128 + (1+1)*150=428MB
key_buffer             =128M
sort_buffer_size       =2M
read_buffer_size       =2M
join_buffer_size       =2M
max_connections        =150
max_connect_errors     =10
read_rnd_buffer_size   =4M
max_allowed_packet     =4M
table_cache            =1024
myisam_sort_buffer_size=32M
thread_cache           =16
query_cache_size       =16M
tmp_table_size         =64M
# 由联机到确定断线的时间,原本是28800(sec),约8小时,先将它改为20分钟
wait_timeout           =1200
thread_concurrency     =8
old_passwords=1
innodb_data_file_path=ibdata1:10M:autoextend
innodb_buffer_pool_size=128M
innodb_additional_mem_pool_size=32M
innodb_thread_concurrency=16

[mysql.Server]
user=mysql
basedir=/var/lib

[mysqld_safe]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

需要注意的是,鸟哥的主机上内存有2GB,所以跟内存相关的数据才会写很大。请依照您实际拥有的内存量来处理。还要加上您Apache本身的内存用量。所以,如果您的网站流量很大的话,在效率测试上要很注意。

3. 忘记MySQL root密码的紧急处理

如果不小心忘记MySQL的密码怎么办?网络上有一些工具可以让您去处理MySQL数据库。如果您的数据库内容并不是很重要,删除也无所谓的话(测试中),那么可以在MySQL关闭后,将/var/lib/mysql目录整个删除掉,然后再重新启动MySQL,那么MySQL数据库会重建,您的root就没有密码了。不过,这个方法仅适合您的数据库并不重要的时候,如果数据库很重要呢?那千万不要随便删除。

【责任编辑:董书 TEL:(010)68476606】

回书目   上一节   下一节

分享到:

  1. Linux服务器配置全程实录
  2. 揭秘--优秀PPT这样制作

热点职位

更多>>

热点专题

更多>>

读书

解密SEO:搜索引擎优化与网站成功战略
本书是作者根据十年网站营销经验,特别是搜索引擎优化(SEO)实现营销方面的技术和实践总结。本书帮助读者建立搜索营销的概念,

51CTO旗下网站

领先的IT技术网站 51CTO 中国首个CIO网站 CIOage 中国首家数字医疗网站 HC3i 51CTO学院 区块链第一聚合媒体 zhijiapro