MySQL数据库用户登录管理
创建用户
创建新用户是数据库管理的基础操作之一,在MySQL中,可以使用以下命令来创建新用户:
CREATE USER '用户名'@'来源地址' [IDENTIFIED BY [PASSWORD] '密码'];
用户名:指定将创建的用户名。
来源地址:指定新创建的用户可在哪些主机上登录,可使用IP地址、网段、主机名的形式,本地用户可用localhost,允许任意主机登录可用通配符%。
密码:若使用明文密码,直接输入密码;若使用加密密码,需要先使用SELECT PASSWORD('密码');
获取密文,再在语句中添加PASSWORD '密文';若省略"IDENTIFIED BY"部分,则用户的密码将为空(不建议使用)。
示例1:使用明文密码创建用户,只允许zhangsan用户从本地登录:
CREATE USER 'zhangsan'@'localhost' IDENTIFIED BY '123123';
示例2:使用密文密码创建用户,只允许lisi用户从本地登录:
SELECT PASSWORD('123456'); # 先获取密文 CREATE USER 'lisi'@'localhost' IDENTIFIED BY PASSWORD '密文';
查看用户信息
创建后的用户保存在mysql数据库的user表中,可以通过以下命令查看user表中的用户信息:
USE mysql; SELECT User, Host, authentication_string FROM user;
重命名用户
可以使用RENAME USER命令将用户重命名:
RENAME USER 'zhangsan'@'localhost' TO 'wangwu'@'localhost';
删除用户
删除用户使用DROP USER命令:
DROP USER 'lisi'@'localhost';
修改当前登录用户的密码
使用ALTER USER或SET PASSWORD命令可以修改当前登录用户的密码:
ALTER USER() IDENTIFIED BY 'new_password'; -或者 SET PASSWORD = PASSWORD('new_password');
修改其他用户的密码
使用ALTER USER命令可以修改其他用户的密码:
ALTER USER 'nancy'@'localhost' IDENTIFIED BY 'abc123';
忘记root用户密码的解决办法
1、修改配置文件/etc/my.cnf,不使用密码直接登录到MySQL:
```sh
vim /etc/my.cnf [mysqld] skip-grant-tables # 添加此行,使登录MySQL不使用授权表 service mysqld restart # 重启服务 mysql # 直接登录,无需密码
```
2、使用UPDATE命令修改root密码,刷新数据库:
```sql
mysql> UPDATE mysql.user SET authentication_string=PASSWORD('123456') WHERE user='root';
mysql> FLUSH PRIVILEGES; # 刷新数据库
mysql> quit # 退出 mysql -uroot -p123456 # 免交互登录的话,"-p密码"不能有空格
```
3、删除配置文件中的配置,之后重启服务:
```sh
vim /etc/my.cnf
# 注意:最后再把/etc/my.conf配置文件里的skip-grant-tables删除,并重启MySQL服务。 service mysqld restart
```
查看当前登录用户
使用以下命令查看当前登录用户和来源地址:
SELECT user();
数据库用户授权
授予用户权限
GRANT语句用来设置数据库用户的访问权限,当指定的用户名不存在时,GRANT语句将会创建新的用户;当指定的用户名存在时,GRANT语句用于修改用户信息。
命令格式:
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'来源地址' [IDENTIFIED BY '密码'];
权限列表:列出授权使用的各种数据库操作,以逗号分隔如"select, insert, update",使用"all"表示所有权限。
数据库名.表名:指定授权操作的数据库和表的名称,其中可以使用通配符*,使用"mysql.*"表示授权操作的对象为mysql数据库中的所有表。
用户名@来源地址:指定用户名称和允许访问的客户机地址,来源地址可以是域名、IP地址,还可以使用“%”通配符。
IDENTIFIED BY:用于设置用户连接数据库时所使用的密码字符串,在新建用户时,若省略"IDENTIFIED BY"部分,则用户的密码将为空。
示例:允许用户zhangsan在本地查询school数据库中所有表的数据记录,但禁止查询其他数据库中的表的记录,使用密码“123456”进行登录。
GRANT select ON school.* TO 'zhangsan'@'localhost' IDENTIFIED BY '123456';
相关问题与解答
问题1:如何查看特定用户的权限?
答:你可以使用SHOW GRANTS
命令来查看特定用户的权限,查看用户zhangsan的权限:
SHOW GRANTS FOR 'zhangsan'@'localhost';
问题2:如何撤销用户的某个权限?
答:你可以使用REVOKE命令来撤销用户的某个权限,撤销用户zhangsan在school数据库上的SELECT权限:
REVOKE SELECT ON school.* FROM 'zhangsan'@'localhost';
以上就是关于“mysql数据库多少用户登录_管理数据库和用户(MySQL)”的问题,朋友们可以点击主页了解更多内容,希望可以够帮助大家!