码迷,mamicode.com
首页 > 数据库 > 详细

MySql 所遇到的问题及其解决方法

时间:2015-03-09 16:04:28      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:

1.ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)

1)关闭mysql服务

/etc/init.d/mysqld stop 

2)开启安全模式 & 后台运行

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

3)登录

mysql -u root mysql 

////////////////

分支一:

4)查询user表

mysql> select * from user;

5)插入新用户

mysql> insert into user (Password,User) values(PASSWORD(‘root‘),‘root‘);

注意:

insert into user (Password,User) values(‘123‘,‘root‘);是不行的,因为秘密必须用PASSWORD() 函数加密。

mysql>quit;

提示:第二次执行insert语句时,相同root、密码会提示下面的错误信息 

mysql> insert into user (Password,User) values(PASSWORD(‘root‘),‘root‘);会提示错误 ERROR 1062 (23000): Duplicate entry ‘root‘ for key ‘PRIMARY‘

 

分支二:

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

mysql> FLUSH PRIVILEGES;  // 记得要这句话,否则如果关闭先前的终端,又会出现原来的错误

mysql> quit 

////////////////

6)重启mysql服务

/etc/init.d/mysqld start

7)登录

mysql -u root -p

Enter password: <输入新设的密码newpassword>  // 仍然是失败.提示ERROR 1045(28000); 通过 UPDATE 重新设置root密码为1234而不是root后,就成功登陆了
mysql>

 

2.mysql_real_connect连接数据库的错误:

关于如何用mysql_real_connect()连接远程数据库

http://www.cnitblog.com/guopingleee/archive/2009/02/14/54548.html

 

(gdb) p m_pszIPAddress
$1 = "localhost", ‘\000‘ <repeats 54 times>
(gdb) p m_pszUserName
$2 = "root", ‘\000‘ <repeats 59 times>
(gdb) p m_pszUserPassword
$3 = "1234", ‘\000‘ <repeats 59 times>
(gdb) p m_pszDatabaseName
$4 = "mytestdb", ‘\000‘ <repeats 55 times>

 

假如第二个参数

const char *host, //连接主机

设置为 localhost , 调用 mysql_real_connect 可以正常运行成功。

改为 192.168.1.100 时,则报如下错误:

$2 = "Access denied for user ‘root‘@‘‘ to database ‘mytestdb‘, 42000", ‘\000‘ <repeats 961 times>

执行下面代码后,错误提示变为:

mysql -u root -p

输入密码

grant all privileges on 数据库名.* to ‘root‘@‘%‘; // 数据库名如:mytestdb

$1 = "Access denied for user ‘root‘@‘192.168.88.131‘ (using password: YES), 28000", ‘\000‘ <repeats 948 times>

不知道应该如何部署mysql的数据库。

 

3.

Q: 当在另一台机器上登录MySQL时出现如下错误:

    ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘x.x.x.x‘ (111)

A: 原因是MySQL考虑到安全因素,默认配置只让从本地登录

    打开 /etc/mysql/my.cnf 文件,找到 bind-address = 127.0.0.1 修改为 bind-address = 0.0.0.0 //  /etc/mysql/my.cnf找不到此文件.

    重启mysql : sudo /etc/init.d/mysql restart

 

 Q: 还一种情况出现类似下面的错误:

    ERROR 1045 (28000): Access denied for user ‘test‘@‘x.x.x.x‘ (using password: NO)

A: 原因是没有给登录用户名设置远程主机登录的权限。

    在本地用 root 登录: mysql -u root -p

    修改 MySQL 数据库中 user 表中 对应用户名的 Host 字段,将 localhost 改为 %

    use mysql;

    update user set Host = ‘%‘ where User = ‘username‘;

 

MySql 所遇到的问题及其解决方法

标签:

原文地址:http://www.cnblogs.com/sylar-liang/p/4323664.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!