MySQL常用指令
修改密码方法:
- 用UPDATE直接编辑user表:
use mysql;
update user set authentication_string=password('123') where user='root' and host = '%';
flush privileges;
- MySQL指令修改用户密码
mysql> set password for root@localhost = password(‘321’);
mysql> flush privileges;
- 终端直接修改密码
// 123为原密码,321为新密码, 需要有管理员权限
mysqladmin -uroot -p123 password 321
忘记root密码:
- 关闭正在运行的MySQL服务;
net stop mysql
-
打开DOS窗口,转动mysql\bin目录;
-
输入mysqld --skip-grant-tables 回车。 --skip-grant-tables 的意思是启动MySQL服务的时候跳过权限表认证。
mysqld --skip-grant-tables
-
再开一个DOS窗口(因为刚才那个DOS窗口已经不能动了),输入mysql回车,如果成功,将出现MySQL提示符 >。
-
连接权限数据库: use mysql; 。
-
改密码:update user set authentication_string=password(“root”) where user=“root”;(别忘了最后加分号) 。
mysql> use mysql;
mysql> update user set authentication_string=password(“123456”) where user=“root”;
mysql> flush privileges;
- 刷新权限(必须步骤):flush privileges;
基本指令
//关闭服务
net stop mysql;
//启动服务
net start mysql;
//登录mysql, xxx为用户名, yyy为密码
mysql -uxxx -pyyy
//创建数据库, xxx为数据库名
mysql> create database xxx;
//查看mysql中有哪些数据库
mysql> show databases;
//切换数据库, xxx为数据库名
mysql> use xxx;
//查看该库中的有哪些表
mysql> show tables;
//查看表结构, xxx为表名
mysql> describe xxx;
创建用户
//查看用户组
mysql> use mysql;
mysql> select user, host from user;
//主机名:默认值为%,表示这个用户可以从任何主机连接Mysql服务器
//密码:可以省略,表示无密码登录
//create user 用户名[@主机名] [identified by '密码'];
mysql> create user 'test2'@'localhost' identified by '123';
mysql> create user 'test3'@% identified by '123';
mysql> create user 'test4'@'192.168.11.%' identified by '123';
mysql> flush privileges;
用户授权
//priveleges:权限列表,可以是all,表示所有权限,也可以是select、update等权限,多个权限之间用逗号分开。
//ON:用来指定权限针对哪些库和表,格式为数据库.表名 ,点号前面用来指定数据库名,点号后面用来指定表名,*.* 表示所有数据库所有表。
//TO:表示将权限赋予某个用户, 格式为username@host,@前面为用户名,@后面接限制的主机,可以是 IP、IP 段、域名以及%,%表示任何地方。
//WITH GRANT OPTION:这个选项表示该用户可以将自己拥有的权限授权给别人。注意:经常有人在创建操作用户的时候不指定 WITH GRANT OPTION 选项导致后来该用户不能使用 GRANT 命令创建用户或者给其它用户授权。备注:可以使用 GRANT 重复给用户添加权限,权限叠加,比如你先给用户添加一个 select 权限,然后又给用户添加一个 insert 权限,那么该用户就同时拥有了select和insert权限。
mysql> grant privileges ON database.table TO 'username'[@'host'] [with grant option]
//给test1用户授权可以操作所有库所有权限,相当于全局数据库管理员权限dba
mysql> grant all on *.* to 'test1'@‘%’;
//test1用户可以对 seata 库中所有的表执行 select
mysql> grant select on seata.* to 'test1'@'%';
//test1用户可以对 seata 库中所有的表执行 select、update
mysql> grant select,update on seata.* to 'test1'@'%';
//test1用户只能查询mysql.user表的user, host字段
mysql> grant select(user,host) on mysql.user to 'test1'@'localhost';
查看用户权限
//主机可以省略,默认值为%
//show grants for '用户名'[@'主机']
mysql> show grants for 'test1'@'localhost';
//查看当前用户的权限
mysql> show grants;
撤销用户权限
//可以先通过show grants命令查询一下用户对于的权限
//然后使用revoke命令撤销用户对应的权限
//revoke privileges ON database.table FROM '用户名'[@'主机'];
mysql> revoke select(host) on mysql.user from test1@localhost;
删除用户
//drop user '用户名'[@‘主机’]
//drop的方式删除用户之后,用户下次登录就会起效。
mysql> drop user test1@localhost;
//通过删除 mysql.user 表数据的方式删除
mysql> delete from user where user='用户名' and host='主机';
mysql> flush privileges;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通