linux下使用localhost和127.0.0.1都不能连接的解决思路

linux下刚安装了mysql,尝试写了程序连接mysql,出现了只有用本地ip地址才能连接,而127.0.0.1和localhost都不能访问

解决这个问题主要查看3个方向

1.hosts中是否有ip映射

2.mysql数据库中user表中的用户信息是否正确

我解决的方向,

1.hosts查看了有映射127.0.0.1和localhost的信息。

2.用户信息有误

问题在这里:刚安装的时候记得用户和密码都是root,而且配置ip地址通过程序或者其他客户端软件访问是能够访问成功的。

但是退出重启系统后在本地使用命令(其他客户端等都访问正常)

mysql -uroot -proot

访问不了,提示密码

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

百思不得其解...

没办法,只有重新修改用户密码了

方法1

# /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: <输入新设的密码newpassword>

然后在连接mysql,成功。问题完美解决,localhost和127.0.0.1也都能访问了

可能还有其他原因

原因2-配置文件错误:
检查etc下面的my.cnf如下内容:

#password   = your_password
port     = 3306
socket     = /usr/mysql-data/mysql.sock
# Here follows entries for some specific programs
# The MySQL server
[mysqld]
port     = 3306
socket     = /usr/mysql-data/mysql.sock

mysql修改密码方法有几种

方法一   

使用phpMyAdmin

  (图形化管理MySql数据库的工具),这是最简单的,直接用SQL语句修改mysql数据库库的user表,不过别忘了使用PASSWORD函数,插入用户用Insert命令,修改用户用Update命令,删除用Delete命令。在本节后面有数据表user字段的详细介绍。   

方法二   

  使用mysqladmin。输入  

  mysqladmin -u root -p oldpassword newpasswd  

执行这个命令后,需要输入root的原密码,这样root的密码将改为newpasswd。同样,把命令里的root改为你的用户名,你就可以改你自己的密码了。

  当然如果你的mysqladmin连接不上mysql

  server,或者你没有办法执行mysqladmin,那么这种方法就是无效的,而且mysqladmin无法把密码清空。   

  下面的方法都在mysql提示符下使用,且必须有mysql的root权限:   

方法三   

  mysql> INSERT INTO mysql.user (Host,User,Password) VALUES('%','system', PASSWORD('manager'));

  mysql> FLUSH PRIVILEGES   

  确切地说这是在增加一个用户,用户名为system,密码为manager。注意要使用PASSWORD函数,然后还要使用FLUSH

  PRIVILEGES来执行确认。  

原文地址:https://www.cnblogs.com/hwaggLee/p/4640872.html