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前面加上#
现在就可以用新的密码登录了。