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来执行确认。