标签:
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‘;
标签:
原文地址:http://www.cnblogs.com/sylar-liang/p/4323664.html