当前位置:   article > 正文

mysql常用问题解决_常见mysql的错误以及解决方法-常见问题

mysql.user table already exists! run mysql_upgrade, not mysql_install_db

MYSQL启动错误

Can't open the mysql.plugin table...2009-06-01 00:52Can't open the mysql.plugin table. Please run mysql_upgrade to create it.

mysql是已经被编译好的mysql-5.1.28-rc-linux-i686-glibc23.tar.gz

shell>mkdir /usr/local/mysql

shell> groupadd mysql

shell> useradd -g mysql mysql

shell> tar zxf /path/to/mysql-VERSION-OS.tar.gz

shell> cp -r * full-path-to-mysql-VERSION-OS/* /usr/local/mysql/

shell> cd /usr/local/mysql

shell> chown -R mysql .

shell> chgrp -R mysql .

shell> scripts/mysql_install_db --user=mysql

shell> chown -R root .

shell> chown -R mysql data

shell> bin/mysqld_safe --user=mysql &

这是执行scripts/mysql_install_db --user=mysql没有成功的原因,没有一个初始化数据库,不能启动mysql守护进程,重新执行:

shell> scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/date --user=mysql

由于安装方法不同mysql的安装目录也不相同,mysql_install_db文件的位置也不一样

可以使用find / -name mysql_install_db来查找

实例:

/usr/local/mysql/bin/mysql_install_db --user=mysql --datadir=/usr/local/mysql  --basedir=/usr/local/mysql

在MYSQL启动老失败即:Starting MySQL.Manager of pid-file quit without updating file.[FAILED]

查看错误日志显示:mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data

/usr/local/mysql/bin/mysqld: Table 'mysql.plugin' doesn't exist

Can't open the mysql.plugin table. Please run mysql_upgrade to create it.

InnoDB: The first specified data file ./ibdata1 did not exist:

[root@centos var]# service mysqld stopMySQL manager or server PID file could not be found!       [FAILED]

解决办法:

首先查看一下进程

[root@centos mysql]# ps aux |grep mysq*root      2643  0.0  0.2   4536  1224 ?        S    01:09   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/var --pid-file=/usr/local/mysql/var/centos.pid

mysql     2757  0.0  1.2  36976  6608 ?        Sl   01:09   0:00 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --user=mysql --log-error=/usr/local/mysql/var/centos.err --pid-file=/usr/local/mysql/var/centos.pid --socket=/tmp/mysql.sock --port=3306

root      4788  0.0  0.1   3920   684 pts/2    R+   11:11   0:00 grep mysq*

如果看到上面的内容,那说明,Mysql的进程卡死了,这时用就要把这些卡死的进程都关闭

[root@centos mysql]# kill 2643[root@centos mysql]# kill 2757启动Mysql 就ok了

[root@centos mysql]# service mysqld start

Starting MySQL.                                            [  OK  ]

mysql数据库忘记密码

现在终于被我找到了解决方法,如下(请先测试方法三,谢谢!):

方法一:

# /etc/init.d/mysql stop

# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &

# mysql -u root mysql

mysql> UPDATE user SET Password=PASSWORD('newpassword') where USER='root';

mysql> FLUSH PRIVILEGES;

mysql> quit

# /etc/init.d/mysql restart

# mysql -uroot -p

Enter password:

方法二:

直接使用/etc/mysql/debian.cnf文件中[client]节提供的用户名和密码:

# mysql -udebian-sys-maint -p

Enter password:

mysql> UPDATE user SET Password=PASSWORD('newpassword') where USER='root';

mysql> FLUSH PRIVILEGES;

mysql> quit

# mysql -uroot -p

Enter password:

mysql>

遇到了 SQLException: access denied for  @'localhost' (using password: no)

解决办法   grant all privileges on *.* to py@localhost identified by '1';

flush privileges;

拿  py    1 登陆

附:

mysql> grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接口令’;

权限1,权限2,…权限n代表select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14个权限。

当权限1,权限2,…权限n被all privileges或者all代替,表示赋予用户全部权限。

当数据库名称.表名称被*.*代替,表示赋予用户操作服务器上所有数据库所有表的权限。

用户地址可以是localhost,也可以是ip地址、机器名字、域名。也可以用’%'表示从任何地址连接。

‘连接口令’不能为空,否则创建失败。

mysql>grant select,insert,update,delete,create,drop on vtdc.employee to py@192.168.1.1 identified by ‘123′;

给来自192.168.1.1的用户py分配可对数据库vtdc的employee表进行select,insert,update,delete,create,drop等操作的权限,并设定口令为123。

mysql>grant all privileges on 51cto.* to py@192.168.1.1 identified by ‘123′;

给来自192.168.1.1的用户py分配可对数据库51cto所有表进行所有操作的权限,并设定口令为123。

mysql>grant all privileges on *.* topy@192.168.1.1identified by ‘123′;

给来自192.168.1.1的用户py分配可对所有数据库的所有表进行所有操作的权限,并设定口令为123。

mysql>grant all privileges on *.* tojoe@localhostidentified by ‘123′;

给本机用户joe分配可对所有数据库的所有表进行所有操作的权限,并设定口令为123。

mysql数据库导出数据

mysqldump -u用户名 -p数据库名 > 数据库名.sql

mysqldump --opt mysql -uroot -ppassword > /mysql.sql

mysql数据库导入数据

mysql -u用户名 -p 数据库名 < 数据库名.sql

mysql -uroot -p mysql < mysql.sql

修复表

use mysql;

repair table mysql;

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/312282
推荐阅读
相关标签
  

闽ICP备14008679号