【求助】关于mysql 5.0.26的问题

【求助】关于mysql 5.0.26的问题

关于mysql 5.0.26的问题

我下的5.0.26的原代码,然后编译。
./configure --prefix=/usr/local/mysql && make && make install
/usr/local/mysql/bin/mysql_install_db
useradd mysql
chown -R root.mysql /usr/local/mysql
chown -R mysql.mysql /var/mysql
然后把mysql做成服务了。
service mysql以后,成功。改了root密码。
然后连进去。
[root@localhost init.d]# mysql -u aaa
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 27 to server version: 5.0.26-log

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

mysql>
随便一个不存在的用户aaa,居然就这么莫名其妙的进来了???
而且权限超级大。
mysql> system cat /etc/shadow
root1$P9bb2d.8$Q/AcAniBmSSMxxxxxxxxxx:13432:0:99999:7:::
bin:*:13432:0:99999:7:::
daemon:*:13432:0:99999:7:::
adm:*:13432:0:99999:7:::
lp:*:13432:0:99999:7:::
sync:*:13432:0:99999:7:::
shutdown:*:13432:0:99999:7:::
halt:*:13432:0:99999:7:::
mail:*:13432:0:99999:7:::
news:*:13432:0:99999:7:::
uucp:*:13432:0:99999:7:::
operator:*:13432:0:99999:7:::
games:*:13432:0:99999:7:::
gopher:*:13432:0:99999:7:::
ftp:*:13432:0:99999:7:::
nobody:*:13432:0:99999:7:::
dbus:!!:13432:0:99999:7:::
vcsa:!!:13432:0:99999:7:::
rpm:!!:13432:0:99999:7:::
haldaemon:!!:13432:0:99999:7:::
netdump:!!:13432:0:99999:7:::
nscd:!!:13432:0:99999:7:::
sshd:!!:13432:0:99999:7:::
rpc:!!:13432:0:99999:7:::
rpcuser:!!:13432:0:99999:7:::
nfsnobody:!!:13432:0:99999:7:::
mailnull:!!:13432:0:99999:7:::
smmsp:!!:13432:0:99999:7:::
pcap:!!:13432:0:99999:7:::
apache:!!:13432:0:99999:7:::
squid:!!:13432:0:99999:7:::
webalizer:!!:13432:0:99999:7:::
xfs:!!:13432:0:99999:7:::
ntp:!!:13432:0:99999:7:::
gdm:!!:13432:0:99999:7:::
pegasus:!!:13432:0:99999:7:::
htt:!!:13432:0:99999:7:::
dovecot:!!:13432:0:99999:7:::
mysql1$3aHcIq1D$hMZrQtadJOxxxxxxxxxx.:13459:0:99999:7:::
postfix:!!:13437:0:99999:7:::
mysql>
(mysql和root密码那部分后10位我给XX掉了。)呵呵,我怕crack出来密码。


[root@localhost init.d]# ps -ef| grep mysql
root      3125     1  0 04:36 ?        00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --user=root
root      3220  3125  0 04:36 ?        00:00:00 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql --datadir=/data/mysqldata --user=root --pid-file=/data/mysqldata/localhost.localdomain.pid --skip-external-locking --port=3306 --socket=/tmp/mysql.sock
root     31521 30600  0 07:23 pts/1    00:00:00 grep mysql
[root@localhost init.d]#
使用root跑的,但是,mysql.server脚本里,默认是mysql用户,

basedir=
datadir=

# The following variables are only set for letting mysql.server find things.

# Set some defaults
pid_file=
server_pid_file=
use_mysqld_safe=1
user=mysql


我自己修改
chmod 744 -R /data/mysqldata/
chown -R mysql.mysql /data/mysqldata/
/usr/local/mysql/bin/mysqld_safe --user=mysql
这个时候,ps -ef下看看。
root     31586 30600  0 07:28 pts/1    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --user=mysql
mysql    31610 31586  0 07:28 pts/1    00:00:00 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql --datadir=/data/mysqldata --user=mysql --pid-file=/data/mysqldata/localhost.......
启动权限改了。但是,还是可以用不存在的用户aaa,进去数据库,而且还是root权限。。。

怎么搞???
我编译错了,还是权限错了???
各位大大帮忙阿???


今天,把以前的5.0.26版本的mysql全部干掉了以后,重新用RPM包,安装了5.0.27版本的mysql。
[root@localhost ~]# mysql --version
mysql  Ver 14.12 Distrib 5.0.27, for pc-linux-gnu (i686) using readline 5.0
还是出现以上的问题。
任意用户,不管这个用户存在与否,都能够进去数据库。
并且可以以root权限,执行所有命令。。。

root      3784     1  0 15:44 pts/2    00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/localhost.localdomain.pid
mysql     3817  3784  0 15:44 pts/2    00:00:00 /usr/sbin/mysqld --basedir=/ --datadir=/var/lib/mysql --user=mysql --pid-file=/var/lib/mysql/localhost.localdomain.pid --skip-extern。。。。。。      
默认初始化的 mysql 数据库的问题, user 表中有帐号或密码为空的记录, 所以用任意用户都可以访问, 删掉这些记录就可以了
use mysql;
delete from user where username='';
update user  set password=OLD_PASSWORD('new_password') where username='root';