1.ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)
> 检查mysqld状态
#/etc/rc.d/init.d/mysqld status
如果是关闭的,开启
service mysqld restart
2.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
方法1:
#use mysql;
#update user set password=PASSWORD('newpass') where user = 'root';
#flush privileges; // 记得要这句话,否则如果关闭先前的终端,又会出现原来的错误
#quit
#/etc/init.d/mysqld restart
#mysql -u root -p
输入新密码即可
方法2:
#mysql> insert into user (Password,User) values(PASSWORD('newpass'),'root');
#mysql> quit;
#/etc/init.d/mysqld restart
#mysql -u root -p
3.mysql创建用户以及授权
mysql>create user guest identified by '123456'; // 创建一个guest用户
mysql>grant all privileges on mytestdb.* to 'guest'@'localhost' identified by '123456'; // 授予guest在mytestdb上的权限。如果是本地的mysql,@后面用localhost;如果是远程的,采用@'%'。
mysql>flush privileges; // 刷新权限
mysql>quit
2.mysql_real_connect连接数据库的错误:
关于如何用mysql_real_connect()连接远程数据库
http://www.cnitblog.com/guopingleee/archive/2009/02/14/54548.html
(gdb) p m_pszIPAddress
$1 = "localhost", ' 00' <repeats 54 times>
(gdb) p m_pszUserName
$2 = "root", ' 00' <repeats 59 times>
(gdb) p m_pszUserPassword
$3 = "1234", ' 00' <repeats 59 times>
(gdb) p m_pszDatabaseName
$4 = "mytestdb", ' 00' <repeats 55 times>
假如第二个参数
const char *host, //连接主机
设置为 localhost , 调用 mysql_real_connect 可以正常运行成功。
改为 192.168.1.100 时,则报如下错误:
$2 = "Access denied for user 'root'@'' to database 'mytestdb', 42000", ' 00' <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", ' 00' <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';