mysql中的用户管理

要在mysql命令行执行mysql支持的函数,可以用select 函数,如要查看”abc”加密后的结果:

select password('abc');
+-------------------------------------------+
| password('abc')                           |
+-------------------------------------------+
| *0D3CED9BEC10A777AEC23CCC353A8C08A633045E |
+-------------------------------------------+

查看当前登录的用户:

select user();
+----------------+
| user()         |
+----------------+
| root@localhost |
+----------------+

可以看出mysql把并不把user看作一个用户,而是把’user’@’host’这个整体看作一个用户。这样有利于更加细粒度的管理用户、密码和权限。

查看所有用户:

select host, user, password from mysql.user;
+-------------------+------+-------------------------------------------+
| host              | user | password                                  |
+-------------------+------+-------------------------------------------+
| localhost         | root | *667F407DE7C6AD07358FA38DAED7828A72014B4E |
| ambari.slave5.com | root |                                           |
+-------------------+------+-------------------------------------------+

可以看出有两个用户,名字都为root。但是在本地登录的时候需要密码,在ambari.slave5.com主机登录的时候不需要密码。

登录mysql命令行的形式:

mysql -uuser -p -hhost #用user用户名,登录host主机的mysql服务。

当mysql服务检测到有用户登录的时候,会先去库里查看对应用户的认证。用户名当然就是用户-u后面的用户名,密码是-p输入的内容,但是还需要获取host,这个和上面命令中的host不一样。上面命令中的host是要登陆那台有mysql服务的主机的host,而mysql认证的是要运行命令行的主机的host(mysql客户端host)。

举例:
在host1上运行着mysql服务,host2想用命令行连接host1的mysql服务:

mysql -uhive -p -hhost1 #回车,然后输入密码

若能登录成功,要求存在hive@host2用户:

select host, user, password from mysql.user;
+-------------------+------+-------------------------------------------+
| host              | user | password                                  |
+-------------------+------+-------------------------------------------+
| host2             | hive | *667F407DE7C6AD07358FA38DAED7828A72014B4E |
+-------------------+------+-------------------------------------------+

要注意:[email protected]和root@localhost不是同一个用户。
而且假如本机的ip为10.180.29.185,在本机,分别用以下两种方式登录用户会不一样:

mysql -uroot -hlocalhost -p     #此时的密码要看root@localhost的密码
mysql -uroot -h10.180.29.185 -p #此时的密码要看[email protected]的密码,若没有会看root@当前hostname的密码(在/etc/hosts下设置)

创建用户:

create user 'username'@'hostname' identified by 'password';

删除用户:

drop user 'username'@'hostname'

给用户授权:

GRANT privileges ON db.table TO 'username'@'hostname' [identified by 'password'];
--privileges:用户的操作权限,如:SELECT  INSERT  UPDATE 等,如果要授予所有的权限则使用ALL
​
flush privileges; --刷新权限

查看用户权限:

show grants for 'username'@'hostname';

-- 也可以从表里查看:
select * from mysql.user where user='username' and host='hostname' \G; --\G 改变输出格式

猜你喜欢

转载自blog.csdn.net/xuejianbest/article/details/80405760