4.1.4 典型故障实例
4.1.4.1 Mysql 服务器常见故障排除
数据库是Linux网络应用中的主要部分。MysQL是瑞典的T.c.X公司负责开发和维护的。是一个真正的多用户、多线程SQL数据库服务器。MysQL是以一个客户机/服务器结构实现其功能的,它由一个服务器守护程序mysqld和很多不同的客户程序和库组成。MySQL主要特点是快速、健壮和易用。MySQL已经成为当前网络中使用最多的数据库之一,特别是在Web应用上,目前使用Mysql数据库Web站点包括 Yahoo、 NASA、 MP3.com等。MySQL目前可以工作在许多异构平台上:Windows NT/2000/2003,Unix,Linux, MAC OS X 上。特别是LAMP平台MYSQL成为首先数据库。软件源代码可以在http://www.mysql.com/downloads/index.html 获取。另外Mysql服务器需要Perl语言支持,所以要安装Perl语言和相关的库函数。
1、软件安装简介:
#tar zxvf mysql-3.23.58.tar.gz
cd mysql-3.23.58
./configure --prefix=/usr/local/mysql --
sysconfdir=/etc --localstatedir=/var/lib/mysql
make;make install
|
安装完以后先初始化数据库:
#/usr/local/mysql/bin/mysql_install_db
|
添加mysql这个用户:
#useradd -M -o -r -d /var/lib/mysql -s /bin/bash -c "MySQL Server" -u 27 mysql
|
启动mysql:
#/usr/local/mysql/bin/safe_mysqld &
|
查看mysql能否正常工作:
2、常见故障排除
通常看到的是不能正常链接数据库,错误提示一般为:
#ERROR 2002: Can't connect to local MySQL server
through socket '/var/lib/mysql/mysql.sock' (2)
|
一般大家都会遇到这个问题,链接不到mysqld.sock,仔细看看mysql的错误日志就明白怎么回事,错误日志是在文件/var/lib/mysql/*.err中, 这时你会发现mysql只所以不能启动,是因为/var/lib/mysql的权限不允许mysql服务访问,mysql默认是调用mysql用户来启动服务的,既然知道是什么原因找到不能启动,那就简单了。我们只要慢慢调试权限就可以了。一般如下操作就不会有问题:
#chown -R root /usr/local/mysql
chgrp -R mysql /usr/local/mysql
chown -R root /usr/local/mysql/bin
chgrp -R mysql /usr/local/mysql/bin
chgrp -R mysql /var/lib/mysql
chmod 777 /var/lib/mysql
chown -R root /var/lib/mysql/mysql
chgrp -R mysql /var/lib/mysql/mysql
chmod 777 /var/lib/mysql/mysql
chown -R root /var/lib/mysql/mysql/*
chgrp -R mysql /var/lib/mysql/mysql/*
chmod 777 /var/lib/mysql/mysql/*
chmod 777 /usr/local/mysql/lib/mysql/libmysqlclient.a
|
然后把编译目录的一个脚本拷贝到Mysql启动目录中:
#cp support-files/mysql.server /etc/rc.d/init.d/mysqld
|
如果希望mysql每次启动都能自动运行,可以用ntsysv设置。以root权限运行命令:
 |
(点击查看大图)图-1启动MySQL提供网络服务 |
打开如图-1所示的窗口,在mysqld服务选项加上*(用空格键),然后重新启动系统,这样系统会启动mysql服务。
3 、设定安全有效的MYSQL口令:
Mysql在安装后,会预定义一个超级用户Root,口令为空。任何用户都可以丛Mysql服务器本地使用该用户连接MySQL数据库进行操作。这显然是非常不安全的,所以第一次启动MySQL服务器后,应当立刻设定root密码,密码应当遵循字母、数字应大小写(因为Linux对大小写是有区分)混合使用的规则:使用象“#”或“%” 或“$”这样的特殊字符也会添加复杂性。例如采用“countbak”一词,在它后面添加 #$(countbak#$),这样您就拥有了一个相当有效的密码。
#usr/local/mysql/bin/mysqladmin -uroot password countbak#$
|
4、测试
为了测试安装的程序是否正确及MySQL是否已经正常启动,最好的办法就是用MySQL客户端来连接数据库。
#/usr/local/mysql/bin/mysql
[root@ftp bin]# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 687 to server version: 3.23.58
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
mysql> show databases;
+--------------+
| Database |
+--------------+
| mysql |
| test |
+--------------+
2 rows in set (0.00 sec)
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> delete from user where user=''; (删除所有用户名为空的用户,可以提高安全性)
Query OK, 2 rows affected (0.00 sec)
mysql> quit
Bye
|
连接成功,可以关闭数据库.
#/usr/local/mysql/bin/mysqladmin -uroot shutdown
|
5、MySQL 忘记口令的解决办法
如果 MySQL 正在运行,首先杀掉它的进程:
启动 MySQL :
bin/safe_mysqld --skip-grant-tables &
|
就可以不需要密码就进入 MySQL 了。
>use mysql
>update user set password=password("new_pass") where user="root";
>flush privileges;
|
重新杀掉MySQL进程 ,用正常方法启动 MySQL
(责任编辑:admin_kevinsky) |