Silentdoer

导航

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编辑  收藏  举报