Mysql初始化root密码和允许远程访问

无法远程访问Mysql的解决方案

在网上有很多关于这个的解决方案,我也采用了
写的比较详细的如:
 1。 改表法。可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"
CODE:mysql -u root -p123
mysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>select host, user from user;
  2. 授权法。例如,你想kevin使用mypassword从任何主机连接到mysql服务器的话。
CODE:GRANT ALL PRIVILEGES ON *.* TO 'kevin'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
  如果你想允许用户kevin从ip为192.168.101.234的主机连接到mysql服务器,并使用mypassword作为密码
CODE:GRANT ALL PRIVILEGES ON *.* TO 'kevin'@'192.168.101.234' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
  3.如果按照上面这样做还不行(一般好像在windows下那样就可以了)那就修改下面这个配置文件吧(我是在linux环境下 大家可以找到自己mysql安装目录下的相应配置文件)
CODE:vi /etc/mysql/my.cnf
  注释掉
CODE:#bind-address = 127.0.0.1
  大功告成!!!

然后我采用的是第一种方法,然后在运行完最后一句话后出了个错误ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY' 
于是又去找解决方案,发现先

mysql> select host,user from user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| %         | root             |
| 127.0.0.1 | root             |
| ::1       | root             |
| localhost | debian-sys-maint |
| localhost | phpmyadmin       |
| smarthome | root             |
+-----------+------------------+
6 rows in set (0.00 sec)
host已经有了%这个值,所以直接运行命令: 

mysql>flush privileges; 
果然还行的通,由于对mysql不是很深入的了解,通过php果然可以远程访问了,但是我忽略了一点
这里将host = '%'后,是可以远程访问了,但是我们使用root不能访问本地了
这是由于%的意思就是允许除本机外的所有都可以访问

如果前面已经如上操作了,那么你再在本地访问的时候
#mysql -u root -p
输入密码后会提示

 

 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 
这就很郁闷,本机已经无法登陆了,这时我们需要安全模式进入(个人理解为安全模式)

方法1:

开始-运行 输入“mysql -uroot -pmyadmin”后出现以下错误:

“Access denied for user 'root'@'localhost' (using password:YES)”
直接输入“mysql” 也回报类似的错误:应该是:
“Access denied for user 'ODBC'@'localhost' (using password:NO)”具体的不记得了,貌似是这个。

关于这个问题,找了很久的解决方案,也换了盘符重装了好几次,问题依旧。
有网上说打开MySQL 的 MySQL 5.5 Command Line Client,在里面进行一系列的操作即可。但是此界面进来就要输入密码:
Access <wbr>denied <wbr>for <wbr>user <wbr>'root'@'localhost' <wbr>(using <wbr>password:YES) <wbr>解决方案
无论输入什么都直接退出。没撤了。
(哦,对了,期间,我还试过,在安装MySQL的时候不设置密码。安装成功后,还是报错。)
网上看了一大堆的解决办法,都不行。最后,结合一些办法,终于解决问题了。至于我的做法对不对?我不知道,但是确实解决了问题。也许还有其他的更好的解决方案,如果兄弟姐妹们知道的话,希望也能与我分享一下,不胜感激。

解决方案:
1、打开MySQL目录下的my.ini文件,在文件的最后添加一行“skip-grant-tables”,保存并关闭文件。
2、重启MySQL服务。
3、在命令行中输入“mysql -uroot -p”(不输入密码),回车即可进入数据库。
4、执行,“use mysql;”使用mysql数据库。
5、执行,“update user set password=PASSWORD("rootadmin") where user='root';”(修改root的密码)
(期间我还select下user表中的记录,查询全部的时候显示了一些乱码,然后我只查询了user表中的Host、User、Password字段,貌似当时显示了3条记录,有1个没有名称。当然,为了解决问题,这些我也管不了了。)
6、打开MySQL目录下的my.ini文件,删除最后一行的“skip-grant-tables”,保存并关闭文件。
7、重启MySQL服务。
8、在命令行中输入“mysql -uroot -prootadmin”,问题搞定!


方法2:
首先,将mysql服务停止
#/etc/init.d/mysql stop   或者  #sudo service mysqld stop
然后再执行
# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
记住  后面那个  &是需要的
等出现一些提示后  应该是在starting...之后
直接输入  mysql 即可进入数据库了  (这里其实也可以是忘记密码后进行修改密码的方法)
进入后,修改密码的语句为:
mysql> use mysql;   
进入数据库修改密码
mysql> update user set password = PASSWORD('你的新密码') where user='root'
如果是要解决上面修改了host的方法就是执行
mysql> update user set host='localhost' where user='root' and host='%'
将host改回来

但是改回来岂不是又无法远程访问了?
其实我们可以新增一个用户,把必要的权限授予于这个用户,且将这个用户的host设为%

过程中出现的错误要仔细查看,要注意防火墙的状态,可能影响数据库的远端连接。

Live together,or Die alone!



1、初始化root密码

进入mysql数据库

mysql>update user set password=PASSWORD(‘123456’) where User='root';

2、允许mysql远程访问,可以使用以下三种方式:

a、改表。

mysql -u root –p
mysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>select host, user from user;

b、授权。

例如,你想root使用123456从任何主机连接到mysql服务器。

mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

如果你想允许用户jack从ip为10.10.50.127的主机连接到mysql服务器,并使用654321作为密码

mysql>GRANT ALL PRIVILEGES ON *.* TO 'jack'@’10.10.50.127’ IDENTIFIED BY '654321' WITH GRANT OPTION;
mysql>FLUSH RIVILEGES

c:在安装mysql的机器上运行:

//进入MySQL服务器
d:\mysql\bin\>mysql -h localhost -u root
//赋予任何主机访问数据的权限
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION
//使修改生效
mysql>FLUSH PRIVILEGES
//退出MySQL服务器
mysql>EXIT





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值