linux的mysql下看不到mysql数据库、不能设置初始密码的解决方案:

 [root@localhost ~]# mysql -uroot -p123

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.0.77 Source distribution

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

mysql>show databases;

+--------------------+
| Database           |
+--------------------+
| information_schema | 
| test               | 
+--------------------+

只显示这个两个数据库,看不到mysql数据库

解决方法:

此问题实际上是用户没有权限:

1. 关闭mysql,service mysqld stop

2. 启动mysql: mysqld_safe --skip-grant-tables

3. 再打开一个ssh连接服务器,进行mysql操作

    [root@localhost ~]#mysql

   

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.0.77 Source distribution

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

mysql>show databases;

在这个模式下是可以看到mysql数据库的。

在数据库名mysql下的user表中,修改相应权限,比如:
如果已经存在了host为localhost的记录,则先删除该记录,delete from user where host='localhost';

然后再进行INSERT INTO `user` VALUES ('localhost','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0);

操作。

操作完成后,将两个ssh连接都关闭,然后再重新连接一个ssh,启动mysql,service mysqld start,然后用mysql命令连接mysql数据库

  [root@localhost ~]#mysql -uroot -p

  密码为空。

 [如果此时还连接不上,再重启一下mysql就好了,service mysqld restart]。

然后就可以用  [root@localhost ~]#mysqladmin -uroot password 'newpassword' 来设置密码了。

 

------------------------------------------------------------------------------------------------------------------------------------------------

 

120217 19:22:31  mysqld started

/usr/local/mysql/bin/mysqld: File './mysql-bin.index' not found (Errcode: 13)

120217 19:22:31 [ERROR] Aborting


错误报告,errcode13,一般就是权限问题,mysql用户是否对数据库目录内的所有文件具有写的权限,查看一下数据库目录data权限

chown mysql.mysql -R data

  当安装好mysql后,启动:/etc/init.d/mysql start 却报了个错:Starting MySQL..Manager of pid-file quit without updating f[失败]) 。下面是我对报错的解决方法总结,我在许多环境下安装过mysql,由于多种原因会报各种错误,现在做个总结以作备查。

一、查看报错日志

报错日志是我们解决问题的方向灯,没有方向灯我们就没了方向。我有次安装时报错日志里就有这样的错误:
/usr/local/mysql/bin/mysqld: error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory。很明显是缺少了库文件 libstdc++.so.5 。这时我们搜索和libstdc相关的包安装即可。

二、也许是selinux惹的祸

如果是centos系统,默认会开启selinux,这个时候可以先关闭它,打开/etc/selinux/config,把SELINUX=enforcing改为SELINUX=disabled后存盘退出重启机器试试。

三、残余数据

也有可能是第二次在机器上安装mysql,有残余数据影响了服务的启动,去mysql的数据目录/data看看,如果存在mysql-bin.index,就赶快把它删除掉吧,它就是罪魁祸首了。

四、确定数据目录的权限

数据目录一般是<prefix>/data,检查一下它的归属,如果不是mysql所有者,一般安装mysql时都会创建mysql的用户和组的,这时要修改一下用户和组:

chown -R mysql:mysql /var/data

五、没有指定数据目录

mysql在启动时没有指定配置文件时会使用/etc/my.cnf配置文件,请打开这个文件查看在[mysqld]节下有没有指定数据目录(datadir)。如果没有请在[mysqld]下设置这一行:

datadir = /usr/local/mysql/data

六、还有mysql进程在跑着

如果这是第二次在机器上安装mysql就极有可能会出现这种情况的,这时系统上很有可能还有mysql进程在运行着。可以执行下列命令查看:

ps -ef | grep mysql

如果出现的结果不止一行的就赶快把它kill掉吧。

七、skip-federated字段在作祟

可以检查一下/etc/my.cnf文件中有没有没被注释掉的skip-federated字段,如果有就立即注释掉吧。

八、出错日志目录不存在

也有可能你现在还不知道mysql的出错日志在哪里吧?这时你可以执行命令查看:

cd mysql/bin

./mysql_safe

这时一定会报错的, 并在错误中显示将错误写在某某目录的某某文件里了,这里检查一下这个目录和文件是否存在,在的话就按日志指示解决,如果没有的话就要创建目录并修改权限和归属了。一般会是/var/lib/mysql/mysql.error,注意mysql.error不用创建的。

cd /var/lib

mkdir mysql

chmod
777 mysql

chown mysql
:mysql mysql

这时再试试吧。如果还是不行的话就留言让大家帮你看看吧……

 报错集合
=======================================


使用Navicat for MySQL连接远程的MySQL服务器,却提示:Can't get hostname for your address
明明已经使用grant命令授权过了的呀,原来还需要再执行一步:

编辑/etc/my.cnf,在:
[mysqld]
内添加一行:skip-name-resolve

MySQL忽略数据库表名大小写
修改/etc/my.cnf,在
[mysqld]
内添加一行:lower_case_table_names=1

 

======================如果你想连接你的mysql的时候发生这个错误:

ERROR 1130: Host '192.168.1.3' is not allowed to connect to this MySQL server

解决方法:
1。 改表法。可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"

mysql -u root -pvmware
mysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>select host, user from user;

2. 授权法。例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。

GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
如果你想允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

GRANT ALL PRIVILEGES ON *.* TO 'root'@'10.10.40.54' IDENTIFIED BY '123456' WITH GRANT OPTION;

 


Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist的解决方法
最终解决方法如下:

在mysql的安装目录下,我的是/usr/local/mysql

./scripts/mysql_install_db --usrer=mysql --datadir=/usr/local/mysql/data/

原因是重装的时候数据目录不一致导致

然后再次启动,OK


\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
一、查看报错日志
报错日志是我们解决问题的方向灯,没有方向灯我们就没了方向。我有次安装时报错日志里就有这样的错误: /usr/local/mysql/bin/mysqld: error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory。很明显是缺少了库文件 libstdc++.so.5 。这时我们搜索和libstdc相关的包安装即可。
二、也许是selinux惹的祸
如果是centos系统,默认会开启selinux,这个时候可以先关闭它,打开/etc/selinux/config,把SELINUX=enforcing改为SELINUX=disabled后存盘退出重启机器试试。
三、残余数据
也有可能是第二次在机器上安装mysql,有残余数据影响了服务的启动,去mysql的数据目录/data看看,如果存在mysql-bin.index,就赶快把它删除掉吧,它就是罪魁祸首了。
四、确定数据目录的权限
数据目录一般是<prefix>/data,检查一下它的归属,如果不是mysql所有者,一般安装mysql时都会创建mysql的用户和组的,这时要修改一下用户和组:
chown -R mysql:mysql /var/data
五、没有指定数据目录
mysql在启动时没有指定配置文件时会使用/etc/my.cnf配置文件,请打开这个文件查看在[mysqld]节下有没有指定数据目录(datadir)。如果没有请在[mysqld]下设置这一行:
datadir = /usr/local/mysql/data
六、还有mysql进程在跑着
如果这是第二次在机器上安装mysql就极有可能会出现这种情况的,这时系统上很有可能还有mysql进程在运行着。可以执行下列命令查看:
ps -ef | grep mysql
如果出现的结果不止一行的就赶快把它kill掉吧。
七、skip-federated字段在作祟
可以检查一下/etc/my.cnf文件中有没有没被注释掉的skip-federated字段,如果有就立即注释掉吧。
八、出错日志目录不存在
也有可能你现在还不知道mysql的出错日志在哪里吧?这时你可以执行命令查看:
cd mysql/bin
./mysql_safe
这时一定会报错的, 并在错误中显示将错误写在某某目录的某某文件里了,这里检查一下这个目录和文件是否存在,在的话就按日志指示解决,如果没有的话就要创建目录并修改权限和归属了。一般会是/var/lib/mysql/mysql.error,注意mysql.error不用创建的。
cd /var/lib
mkdir mysql
chmod 777 mysql
chown mysql:mysql mysql
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist的解决方法

2011-09-09 15:55:42| 分类: 软件编程 |字号 订阅
今天在用一个装好的Mysql时,用safe_mysqldq启动的时候,出现

Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist

最终解决方法如下:

在mysql的安装目录下,我的是/usr/local/mysql

./scripts/mysql_install_db --usrer=mysql --datadir=/usr/local/mysql/data/

原因是重装的时候数据目录不一致导致

然后再次启动,OK
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\