Mysql面试题01

1.如何开启和关闭Mysql服务

windows环境下:启动服务:net start mysql

                               关闭服务:net stop mysql

linux环境下:启动服务:service mysql start

                       关闭服务:service mysql stop

                       重启服务:service mysql restart

阿里云部署(Centos7)环境下:  启动服务:systemctl start mysql.service

                                                          关闭服务:systemctl stop mysql.service

                                                          重启服务:systemctl restart mysql.service

2.检测端口是否运行

windows环境下:netstat -a

linux环境下:netstat -anp|grep 3306

3.为Mysql设置密码或修改密码

set password=password('abc123');//该方法在sskip-grant-tables情况下会报错。

use mysql;
update user set password=password('12345') where user='root';//此方法无论是否skip-grant-tables均可以执行

MySQL用户数据和权限有修改后,希望在"不重启MySQL服务"的情况下直接生效,那么就需要执行这个命令。

4.登陆MySQL数据库

mysql -uroot -p123456

5.查看当前数据库的字符集

登陆mysql

mysql> show variables like "%charac%";

6.查看当前数据库版本

cmd:mysql -V     或者     mysql> select version();

7.查看当前登录的用户。

mysql> select user();

8.创建GBK字符集的数据库oldboy,并查看已建库完整语句

create database oldboy default charset  gbk;

show create database oldboy;

9.创建用户oldboy,使之可以管理数据库oldboy

mysql> grant all privileges on *.* to 'yangxin'@'%' identified by 'yangxin123456' with grant option;
all privileges:表示将所有权限授予给用户。也可指定具体的权限,如:SELECT、CREATE、DROP等。

on:表示这些权限对哪些数据库和表生效,格式:数据库名.表名,这里写“*”表示所有数据库,所有表。如果我要指定将权限应用到test库的user表中,可以这么写:test.user 

to:将权限授予哪个用户。格式:”用户名”@”登录IP或域名”。%表示没有限制,在任何主机都可以登录。比如:”yangxin”@”192.168.0.%”,表示yangxin这个用户只能在192.168.0IP段登录

identified by:指定用户的登录密码

with grant option:表示允许用户将自己的权限授权给其它用户

grant权限是叠加而不是覆盖。

第一次:grant all privileges on *.* to 'yangxin'@'%' identified by 'yangxin123456' with grant option;

第二次:grant create on *.* to 'yangxin'@'%' identified by 'yangxin123456' with grant option;

最后yangxin@%的权限是create;

用户(账号)不单单取决于名字还与host有关

第一次:grant all privileges on *.* to 'oldboy'@'%' identified by 'yangxin123456' with grant option;

第二次:grant all privileges on *.* to 'oldboy'@'localhost' identified by 'yangxin123456' with grant option;

会产生两个用户,oldboy@%与oldboy@localhost

两个用户图片

10.查看创建的用户oldboy拥有哪些权限

mysql> show grants for oldboy@'localhost';

11.查看当前数据库里有哪些用户

mysql> select user,host from mysql.user;

12.进入oldboy数据库

mysql> use oldboy();

13.创建一个innodb GBK表test,字段id int(4)和name varchar(16),id与name作为联合主键。

mysql> create table test (id int(4),name varchar(16),primary key(id,name)) engine=InnoDB default charset=gbk;

14.查看建表结构及表结构的SQL语句

mysql> desc test;

mysql> show create table test\G    (按照字段竖向排列)

15.   插入一条数据“1,oldboy

mysql> insert into test (id,name) values (1,'oldboy');

16.   再批量插入2行数据 “2,老男孩”,“3,oldboyedu

mysql> insert into test (id,name) values (2,'老男孩'),(3,'oldboyedu');

17.   查询名字为oldboy的记录

mysql> select * from test where name='oldboy';//注意必须有引号

18.   把数据id等于1的名字oldboy更改为oldgirl

mysql> update test set name='oldgirl' where id=1;

19.   在字段name前插入age字段,类型tinyint(2),再删除

 mysql> alter table test add age tinyint(2) after id;

 mysql> alter table test add age tinyint(2) before name;//错误。没有before,只有after与first!!!

 mysql> alter table test drop age;

20.不退出数据库,完成备份oldboy数据库

mysql> system mysqldump -uroot -p123456 -B -x -F --events oldboy >/opt/bak.sql//面试中很少问到,我就先把答案抄过来以后再补充吧。

21.删除test表中的所有数据,并查看

mysql> delete from test;

22.删除表test和oldboy数据库并查看

mysql> drop table test;

mysql> drop database oldboy;

23.不退出数据库恢复以上删除的数据

mysql> system mysql -uroot -p123456 </opt/bak.sql//面试中很少问到,我就先把答案抄过来以后再补充吧。

24.把库表的GBK字符集修改为UTF8

mysql> alter database oldboy default character set utf8;

mysql> alter table test default character set utf8;

25.把id列设置为主键,在Name字段上创建普通索引。

mysql> alter table test add primary key(id);

mysql> alter table test add index index_name(name);或者 mysql> create index index_name on test(name);

26.在字段name后插入手机号字段(shouji),类型char(11)

 mysql> alter table test add shouji char(11) after name;

27.所有字段上插入2条记录(自行设定数据)

mysql> insert into test (id,age,name,shouji) values ('4','27','wangning','13833573773'), ('5','20','lisi','13653351543');

28.在手机字段上对前8个字符创建普通索引

方法一:

mysql> alter table test add index index_shouji(shouji(8));

方法二:

mysql> create index index_shouji on test(shouji(8));

29.查看创建的索引及索引类型等信息。

mysql> show index from test\G

30.删除Name,shouji列的索引。

mysql> alter table test drop index index_name;

mysql> alter table test drop index index_shouji;

31.对Name列的前6个字符以及手机列的前8个字符组建联合索引。

mysql> create index index_name_shouji on test(name(6),shouji(8));

32.查询手机号以135开头的,名字为oldboy的记录(提前插入)。

mysql> select * from test where name='oldboy' and shouji like "135%";

33.查询上述语句的执行计划(是否使用联合索引等)。

mysql> explain select * from test where name="oldboy" and shouji like "135%"\G

34.把test表的引擎改成MyISAM

mysql> alter table test engine=myisam;     #myisam不区分大小写

35.收回oldboy用户的select权限。

mysql> revoke select on oldboy.* from oldboy@'localhost';

36.删除oldboy用户。

mysql> delete from mysql.user where user='oldboy';//只要user=‘oldboy'就删除,不考虑host

mysql> drop user oldboy@'localhost';这个多加了一个host条件,这个条件必须带。

37.删除oldboy数据库。

mysql> drop database oldboy;

38.使用mysqladmin关闭数据库。

mysqladmin -uroot -p123456 shutdown

如果要开启:net start mysql即可

39.MySQL密码丢了,请找回?

my.ini文件中找到skip-grant-tables去掉前面的#即可使用任意账号无需密码即可登录

登录之后

mysql> use mysql;
mysql> update user set password=password('12345') where user='root';//此方法无论是否skip-grant-tables均可以执行

mysql> flush privileges;

将my.ini文件的skip-grant-tables前面加上#

现在就可以用新的密码登录了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值