MySQL终端下常用命令
一:控制类命令
1.show variables like "%datadir%";显示注册在variables中(一个注册表key-value的格式存储数据)key能匹配%datadir%的键值对信息;
2.show create table tb_test;显示创建表tb_test的完整语句(包括系统自动补全的默认值);
3.show create schema db_test;显示此数据库的创建信息;
二:用户命令相关
1.登录命令:mysql -u username -p;然后提示输入密码(-uusername也可);注意登录后不能直接切换用户要先exit后重新以新用户登录;
2.查看所有用户:select distinct concat('User:\'',user,'\'@\'',host,'\';') as users from mysql.user;
3.创建用户grant all privileges on db_test.* to 'test'@'%' identified by 'test';然后flush privileges;,注意'test'和'%'的引号不要少了(不要用insert mysql.user。。。这个已经在高版本过时,至少5.6.33已经过时)
这里说明一下,要执行上面的语句要先创建一个数据库,这里是db_test,这点和oracle先创建表空间是一致的;(对于mysql而言用户实际上是由两部分组成,即test@%是构成“一个”用户;
上面的语句是说,创建一个密码是test,用户名是test,且可远程登录的(如果只能本地将%换乘localhost即可)用户,并赋予这个用户管理db_test这个数据库的所有内容[表]的all privileges权限(如果是所有数据库的所有内容则为*.*而非db_test.*,可以此创建另一个总管理员)
注意,%是指可以从所有ip上连接,还可以指定ip使得这个账户只能从指定ip连接mysql服务器;还可以指定部分权限,如将all privileges改为select,delete...;具体有哪些权限可以自行百度;
如果希望某个权限用户可以将自己的权限授予别人,可以在grant .....by 'test'最后加个 with grant option;
4.删除用户,用drop user test;即可;(会自动删除mysql.user的表中对应数据)
5.查看用户的权限:show grants for 'test'@'%';
6.修改密码
方法1: 用SET PASSWORD命令 mysql -u root mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass'); 方法2:用mysqladmin mysqladmin -u root password "newpass" 如果root已经设置过密码,采用如下方法 mysqladmin -u root password oldpass "newpass"
三:表相关
1.describe dbname.tbname;可以列出这个表的结构;(重要,如果先用了use dbName;那么可以省略dbname部分)(Mysql里目前所知所有的describe和explain都可以互换;)
2.create index idx_name_class_num on student(name,class_num)来为name和class_num创建联合索引;
3.show full fields from tb_student;来显示tb_student所有字段的详情信息;
四:SQL优化相关
1.explain/describe命令:可以用explain/describe select* from student where id=i;来查看执行某条Sql时索引是否有生效(比如当condition1 or condition2时即便condition1里的条件是有索引的也会失效);
待续;
重要的表有information_schema中的columns、tables之类的;
posted on 2018-04-06 16:26 Silentdoer 阅读(166) 评论(0) 编辑 收藏 举报