由于mysql对用户严格的授权机制让大家碰到了很多连接不上的问题,我这里的一点总结希望能够帮一点小忙:
mysql的用户连接授权是基于user+host+password的,也就是说每一个被授权的user在初始数据表mysql.user中都有记录
刚安装好的mysql初始的用户user和主机host有(null表示为空)
3.x版本:--user-----host-----password-----
root localhost null
null localhost null
root gcw null
null gcw null
4.x版本:--user-----host-----password-----
root localhost null
null localhost null
root gcw null
null gcw null
5.x版本:--user-----host-----password-----
root localhost null
null localhost null
root build null
null build null
很容易看到初始密码都是空的,很危险!!!
下面我们来修改密码:
登录:如果在mysql server的本机连接,请不要用 mysql -h本机名或者ip -u root 登录,因为你的计算机名或者ip不在初始授权组里面的host表里面,这就是为什么很多人都很无辜的说为什么自己登录不上去,除非你的计算机名就是localhost。很不幸,大多数不是,所以access denied。用这个登录: c:\mysql\bin\mysql -uroot 回车,ok了吧?现在你拥有了对整个数据库的完全操作权利。现在我们做初始工作:
---------初始化时更改口令---------
第一种方法:
shell> mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD( 'new_password ') WHERE user= 'root ';
mysql> FLUSH PRIVILEGES;
在3.22以上的版本还可以用set password 语句:set password for root=password( 'new_password ');
第二种方法:
shell> mysql -u root password new_password
注意:如果你使用第一种方法在user表里直接更新口令,你必须告诉服务器再次读入授权表(用FLUSH PRIVILEGES),因为否则改变将不被注意到。
--------增加新用户权限:-----------
你可以有2个不同的方法增加用户:通过使用GRANT语句或通过直接操作MySQL授权表。比较好的方法是使用GRANT语句,因为他们是更简明并且好像错误少些。
//GRANT语句增加新用户:
mysql> grant all privileges on *.* to new_user@new_host identified by 'new_password ' with grant option;
详细描述增加:
mysql> GRANT ALL PRIVILEGES ON *.* TO monty@localhost
IDENTIFIED BY 'something ' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON *.* TO monty@ "% "
IDENTIFIED BY 'something ' WITH GRANT OPTION;
mysql> GRANT RELOAD,PROCESS ON *.* TO admin@localhost;
mysql> GRANT USAGE ON *.* TO dummy@localhost;
这些GRANT语句安装3个新用户:
monty
可以从任何地方连接服务器的一个完全的超级用户,但是必须使用一个口令( 'something '做这个。注意,我们必须对monty@localhost和monty@ "% "发出GRANT语句。如果我们增加localhost条目,对localhost的匿名用户条目在我们从本地主机连接接时由mysql_install_db创建的条目将优先考虑,因为它有更特定的Host字段值,所以以user表排列顺序看更早到来。
admin
可以从localhost没有一个口令进行连接并且被授予reload和process管理权限的用户。这允许用户执行mysqladmin reload、mysqladmin refresh和mysqladmin flush-*命令,还有mysqladmin processlist。没有授予数据库有关的权限。他们能在以后通过发出另一个GRANT语句授权。
dummy
可以不用一个口令连接的一个用户,但是只能从本地主机。全局权限被设置为 'N '--USAGE权限类型允许你无需权限就可设置一个用户。它假定你将在以后授予数据库相关的权限。
//insert语句增加新用户(不推荐):
mysql> INSERT INTO user VALUES( 'localhost ', 'monty ',PASSWORD( 'something '),
'Y ', 'Y ', 'Y ', 'Y ', 'Y ', 'Y ', 'Y ', 'Y ', 'Y ', 'Y ', 'Y ', 'Y ', 'Y ', 'Y ')
mysql> INSERT INTO user VALUES( '% ', 'monty ',PASSWORD( 'something '),
'Y ', 'Y ', 'Y ', 'Y ', 'Y ', 'Y ', 'Y ', 'Y ', 'Y ', 'Y ', 'Y ', 'Y ', 'Y ', 'Y ')
mysql> INSERT INTO user SET Host= 'localhost ',User= 'admin ',
Reload_priv= 'Y ', Process_priv= 'Y ';
mysql> INSERT INTO user (Host,User,Password)
VALUES( 'localhost ', 'dummy ', ' ');
mysql> FLUSH PRIVILEGES;
取决于你的MySQL版本,对上述,你可能必须使用一个不同数目 'Y '值
问题点数:20 回复次数:3
mysql 授权用户只看一个视图
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Mysql数据库系统部署用户授权远程访问Mysql
安装部署Mysql5.5,授权远程访问,解决部署Mysql错误
mysql centos 数据库