root存在2条是默认的,也可以加上更多条。mysql的权限管理非常灵活,你可以依照 [ 用户名 主机 密码 数据库 表格 ]根据自己需要自行组合适当的访问权限。
默认下root % 和 root localhost 是相同的权限,唯一的区别是 % 代表任何主机 localhost 代表本机。
附参考观点:
下面偶们来分析一下下
在你的授权表中有下列几个用户信息
+------------+----------+--------------------
¦ Host ¦ User ¦ Password
+------------+----------+--------------------
¦ localhost ¦ root ¦ 663512793da8ecd4
¦ % ¦ root ¦
¦ localhost ¦ ¦
+------------+----------+--------------------
MySQL服务器在启动时读入user表后会进行排序,
然后当一个用户试图连接时,
以排序的顺序浏览条目,第一个匹配条目的权限设置将被使用。
上例排序结果是
+------------+----------+--------------------
¦ Host ¦ User ¦ Password
+------------+----------+--------------------
¦ localhost ¦ root ¦ 663512793da8ecd4
¦ localhost ¦ ¦
¦ % ¦ root ¦
+------------+----------+--------------------
当使用 mysql -uroot-p 登录时,
你所匹配的就是第二个用户权限了
Host
Host列值可以是一个主机名、一个IP地址或'localhost'指出本地主机。
你可以在Host字段里使用通配符字符“%”和“_”。
%值匹配所有主机,并可用于允许一个用户从任何地方连接。一个空白的Host值等同于%。
如%wisc.edu匹配任何wisc.edu域内的主机,而%.edu匹配任何教育学院的主机。
类似地,192.168.%匹配任何在192.168 B类子网的主机,
而192.168.3.%匹配任何在192.168.3 C类子网的主机。
(例外:在db表中,一个空白Host值含义是“进一步检查host表”)
User
用户名必须是文字的或空白。
User字段中不支持通配符,但是你能指定一个空白值匹配任何用户。
%作为一个User值并不意味着空白,相反地它匹配一个字面上的%名字,这可能不是你想要的。
Password
口令值可以是空或非空,不允许用通配符。
一个空口令并不意味着匹配任何口令,它意味着用户连接服务器时不得指定口令。
口令是以一个加密过的值存储的,而不是一个字面上的文本。
如果你在Password列中存储一个实际字面上的口令,用户将不能连接!
GRANT语句和mysqladmin password命令为你自动加密口令,
但是如果你用诸如INSERT、REPLACE、UPDATE或SET PASSWORD等命令,
一定要用PASSWORD("new_password")函数而不是简单的"new_password"来指定口令。
例如 UPDATE user SET Password=PASSWORD('your password') WHERE User='root';
提问者的最后观点:
swotcoder(苦 丁) 的说法有道理
原来直接用mysql即可登陆
或者mysql -u任意用户名 即是空密码登陆
谢谢各位的解答!