mysql 无密码可以登入,怎么解决?

ycnxz 2011-06-02 11:47:29
我vmware上装了个fedora15(其实fedora14好像也一样,就不复诉了)
发了命令行任意帐号密码都可以登录mysql 比如

mysql -u rofsaf -p
Enter password:

无密码可以登入,当如果乱敲了密码不行

百度一下有人说要用
mysqladmin -u root password YOUR_PASSWORD

执行了上面的命令 再restart了mysql后
root帐号就必须用设定的密码才能登入了

但是用 任意其他帐号 还是可以无密码登入

这个问题怎么解决

还有另外一个问题,我发现f15启动后 mysql没有启动 所以每次还要start mysqd才行 ,怎么样将mysql加入系统自动启动?
...全文
917 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
ycnxz 2011-06-04
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 ycnxz 的回复:]

引用 10 楼 acmain_chm 的回复:

估计是不是在启动的时候加上了 skip-grant-tables参数。 建议楼主可以看一下你的MYSQLD是怎么启动的,启动的时候带了些什么参数。

或者你可以直接在MYSQL命令中执行一下 FLUSH PRIVILEGES; 然后再试试。

mysqld启动怎么看?我启动是没看到任何参数

光执行 flush privilege……
[/Quote]

UPDATE mysql.user SET Password=PASSWORD('newpass')

好像管用

我之前没看手册部分 只照后面的列子来总 没有PASSWORD('')部分
东那个升 2011-06-04
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 ycnxz 的回复:]
引用 8 楼 zuoxingyu 的回复:

引用 5 楼 ycnxz 的回复:

引用 4 楼 acmain_chm 的回复:

引用但是用 任意其他帐号 还是可以无密码登入其它账号你设置密码了吗?

如果没有就直接设置密码吧。
引用
13.5.1.5. SET PASSWORD语法
SET PASSWORD = PASSWORD('some password')
SET……
[/Quote]

UPDATE mysql.user SET Password=PASSWORD('newpass')
修改所有密码?
ycnxz 2011-06-04
  • 打赏
  • 举报
回复
补充:
之后改root的密码

mysqladmin -u root -p password youyou

值得注意的一点是,这行代码中,password为一命令标志,是mysqladmin用来修改密码的。
ycnxz 2011-06-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 rucypli 的回复:]

贴出你得my.cnf
[/Quote]
f15图形界面打开比较麻烦 我就开f14 命令行登录 好了 反正问题是一样的

f14的/etc/my.cnf文件内容如下:

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
rucypli 2011-06-03
  • 打赏
  • 举报
回复
贴出你得my.cnf
TKD03072010 2011-06-03
  • 打赏
  • 举报
回复
载个图形界面的吧
mysql-front
ycnxz 2011-06-03
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 acmain_chm 的回复:]

估计是不是在启动的时候加上了 skip-grant-tables参数。 建议楼主可以看一下你的MYSQLD是怎么启动的,启动的时候带了些什么参数。

或者你可以直接在MYSQL命令中执行一下 FLUSH PRIVILEGES; 然后再试试。
[/Quote]
mysqld启动怎么看?我启动是没看到任何参数

光执行 flush privileges 好像没有任何作用
ycnxz 2011-06-03
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zuoxingyu 的回复:]

引用 5 楼 ycnxz 的回复:

引用 4 楼 acmain_chm 的回复:

引用但是用 任意其他帐号 还是可以无密码登入其它账号你设置密码了吗?

如果没有就直接设置密码吧。
引用
13.5.1.5. SET PASSWORD语法
SET PASSWORD = PASSWORD('some password')
SET PASSWORD FOR user = PAS……
[/Quote]

安照你的方法做了 然后 service mysqld restart
现在任何用户任何密码都不能登入mysql了——我不知道原因~~

幸好vmware有snapshot
SillyCoder 2011-06-03
  • 打赏
  • 举报
回复
你现在MySQL中有个没有密码的匿名账户吧?看看mysql数据库的user表记录
zuoxingyu 2011-06-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ycnxz 的回复:]

引用 4 楼 acmain_chm 的回复:

引用但是用 任意其他帐号 还是可以无密码登入其它账号你设置密码了吗?

如果没有就直接设置密码吧。
引用
13.5.1.5. SET PASSWORD语法
SET PASSWORD = PASSWORD('some password')
SET PASSWORD FOR user = PASSWORD('some password'……
[/Quote]

用ROOT用户登录后,执行
update mysql.user set password='123';
FLUSH PRIVILEGES;


这样就把所有用户的密码都修改成123了
select * from mysql.user;
可以看到所有用户的信息。
ycnxz 2011-06-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 acmain_chm 的回复:]

贴出你完整的 etc/my.cnf

其中是不是有 skip-grant-tables
[/Quote]

又nano打开/etc/my.cnf确认了一下,3楼贴出的就是完整的my.cnf
没有你说的skip-grant-tables
ACMAIN_CHM 2011-06-03
  • 打赏
  • 举报
回复
贴出你完整的 etc/my.cnf

其中是不是有 skip-grant-tables


ycnxz 2011-06-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 acmain_chm 的回复:]

引用但是用 任意其他帐号 还是可以无密码登入其它账号你设置密码了吗?

如果没有就直接设置密码吧。
引用
13.5.1.5. SET PASSWORD语法
SET PASSWORD = PASSWORD('some password')
SET PASSWORD FOR user = PASSWORD('some password')
SET PASSWORD语句用于向一个原有My……
[/Quote]

问题是 我是用任意帐号都可以无密码登入Mysql啊 那帐号就有无限多个啊
比如
mysql -u fsaf -p 可以
mysql -u gdgs53 -p 可以
mysql -u lhf7456f -p 可以
mysql -u g445sfg2 -p 可以

无穷无尽 怎么一个一个设置的过来?
ACMAIN_CHM 2011-06-03
  • 打赏
  • 举报
回复
[Quote]但是用 任意其他帐号 还是可以无密码登入[/Quote]其它账号你设置密码了吗?

如果没有就直接设置密码吧。
[Quote]
13.5.1.5. SET PASSWORD语法
SET PASSWORD = PASSWORD('some password')
SET PASSWORD FOR user = PASSWORD('some password')
SET PASSWORD语句用于向一个原有MySQL用户 账户赋予一个密码。

第一个语法为当前用户设置密码。已使用一个非匿名账户连接到服务器上的任何客户即都可以更改该账户的密码。

第二个语法为当前服务器主机上的一个特定账户设置密码。只有拥有mysql数据库UPDATE权限的客户端可以这么做。user值应以user_name@host_name的格式被给定,此处user_name和host_name与mysql.user表登录项的User和Host列中列出的完全一样。举例说明,如果您有一个登录项,User和Host列值为'bob'和'%.loc.gov',您应该按如下方法写语句:

mysql> SET PASSWORD FOR 'bob'@'%.loc.gov' = PASSWORD('newpass');
这相当于以下语句:

mysql> UPDATE mysql.user SET Password=PASSWORD('newpass')
-> WHERE User='bob' AND Host='%.loc.gov';
mysql> FLUSH PRIVILEGES;
注释:如果您正在使用一个4.1以前的客户端连接到一个MySQL 4.1或MySQL 4.1以后的服务器,则在阅读5.7.9节,“MySQL 4.1中的密码哈希处理”之前,不能使用前面的SET PASSWORD或UPDATE语句。 密码格式在MySQL 4.1中变更了,并且在特定情况下,如果您更改密码,您可能无法在连接到服务器上。

您可以通过执行SELECT CURRENT_USER()观看您当前的鉴定user@host登录项。

[/Quote]
ACMAIN_CHM 2011-06-03
  • 打赏
  • 举报
回复
估计是不是在启动的时候加上了 skip-grant-tables参数。 建议楼主可以看一下你的MYSQLD是怎么启动的,启动的时候带了些什么参数。

或者你可以直接在MYSQL命令中执行一下 FLUSH PRIVILEGES; 然后再试试。

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧