我之前安装数据库的时候,因为root生成的初始密码,修改的时候网上给出的很多答案都不能正常工作。所以自己总结了一下
Mysql 使用user表来存放用户信息,以下的操作也是基于user表
用户操作
1. 创建新用户
创建用户的简单语法
-- 创建用户并赋予密码
create user '用户名'@'主机' identified by '密码';
这个主机是很重要的设置,它表示允许哪些ip可以登录该数据库。一般本地就设置为‘localhost’。
‘用户名’@‘主机’ 它们是一体的
示例:
-- 创建一个带有用户名,密码用户
mysql> create user 'test'@'localhost' identified by '111111';
注意: 主机 和密码可以缺省
-- 创建一个用户不设置密码
mysql> create user 'test1'
新增的用户没有任何权限,你还需要设置权限
2. 查询用户
mysql的用户信息保存在mysql数据库的user表中。需要提及的是mysql.user
用一个复合主键,host和user
。user@host
会被分别放到user和host字段中。如果不限制host则默认为%
,表示所有ip都可以连接
-- 查询所有用户
select user from mysql.user;
user 表存储了MySQL数据库中所有用户基本信息以及权限信息。在5.7中没有password字段,但是提供了authentication_string字段,存储加密后的密码
select host,user,authentication_string from mysql.user;
下面是我数据库中的测试用户信息
host | user | authentication_string |
---|---|---|
localhost | test | *6BB4837EB74329105EE4568DDA7DC67ED2CA8AD9 |
% | test1 |
3. 修改密码
简单语法:
-
方式一
alter user [if exists] '用户'@'主机名' identified by '新密码'
-
方式二
set password for '用户名'@'主机' = password('新密码')
-
方式三
update user set authentication_string = password("新密码") where user = "用户名";
password()会对你的密码进行加密
示例:
指定用户名,主机和新密码
mysql> alter user 'test'@'localhost' identified by '123456';
mysql> set password for 'test1' = password('111111')
这样其他电脑也可以通过用户“test1”使用 密码 ‘111111’ 来登陆你的MySQL数据库
mysql> mysql -h你的IP -utest1 -p
4. 删除用户
删除MySQL一个或多个账户及其权限。使用drop user 需要有创建用户或者删除数据库的权限。
drop user [if exists] '用户名'@'主机';
drop user 'test'@'localhost';
注意:用户删除操作不会删除该用户之前创建的数据库或对象(包括该用户创建的存储过程或视图)