MySQL必会基础命令
1.1 登陆数据库。
mysql -uroot -poldboy123 -S /data/3306/mysql.sock
1.2 查看数据库版本及当前登录用户是什么。
select version(); select user();
1.3 创建GBK字符集的数据库oldboy,并查看已建库的完整语句。
create database oldboy character set gbk collate gbk_chinese_ci; show create database oldboy\G
1.4 创建用户oldboy,使之可以管理数据库oldboy。
grant all on oldboy.* to 'oldboy'@'localhost' identified by 'oldboy123';
1.5 查看创建的用户oldboy拥有哪些权限。
show grants for oldboy@localhost\G
1.6 查看当前数据库里有哪些用户。
select user,host from mysql.user;
1.7 创建管理员帐户admin
grant all on *.* to 'admin'@'localhost' identified by 'admin123' with grant option;
1.8 进入oldboy数据库
use oldboy;
1.9 创建test表:innodb引擎,字符集为GBK,字段为id int(4)和name varchar(16),查看建表结构及SQL语句。
create table test ( id int(4), name varchar(16) )ENGINE=innodb DEFAULT CHARSET=gbk; desc test; #<==等价于命令:show columns from test; show create table test\G
1.10 插入一条数据 1,oldboy
insert into test values('1','oldboy');
1.11 批量插入数据 2,老男孩,3,etiantian。要求中文不能乱码。
insert into test values('2','老男孩'),('3','etiantian');
1.12 查询插入的所有记录,查询名字为oldboy的记录。查询id大于1的记录。
select * from test where name='oldboy'; select * from test where id>1;
1.13 把数据id等于1的名字oldboy更改为oldgirl。
update test set name='oldgirl' where id=1;
1.14 在字段name前插入age字段,类型tinyint(2)。
alter table test add name tinyint(2) after id;
1.15 备份oldboy库及mysql库。
mysqldump -uroot -poldboy123 -S /data/3306/mysql.sock --events -B oldboy mysql >/opt/bak_$(date +%F).sql
egrep -v "#|^$|--|\/" /opt/bak_2017-06-06-13时36分37秒.sql
1.16 删除表中的所有数据,并查看。
truncate table test; #<==物理删除,一次性清空,不可以rollback delete from test; #<==逻辑删除,一行一行的删,比较慢,可以rollback
1.17 删除表test和oldboy数据库并查看
drop table test; drop database oldboy;
1.18 Linux命令行恢复以上删除的数据。
mysql -uroot -poldboy123 -S /data/3306/mysql.sock </opt/bak_2017-06-07-22时13分20秒.sql
1.19 把GBK字符集修改为UTF8(可选,注意,此题有陷阱)。
1.先导出表中数据
mysqldump -uroot -poldboy123 -S /data/3306/mysql.sock -B oldboy >/opt/test.sql egrep -v "^$|--|\/" /opt/test.sql #<==可以看到这一行:ENGINE=MyISAM DEFAULT CHARSET=gbk;
2.修改字符集
sed -i 's#CHARSET=gbk#CHARSET=utf8#g' /opt/test.sql egrep -v "^$|--|\/" /opt/test.sql #<==验证:) ENGINE=MyISAM DEFAULT CHARSET=utf8;
3.恢复数据
在sql文件中添加一条 set names utf8;并恢复 mysql -uroot -poldboy123 -S /data/3306/mysql.sock oldboy </opt/test.sql
1.20 MySQL密码丢了,如何找回实战?
[root@db01 ~]# netstat -tunlp|grep 3306 #<==先查看服务是否正常 tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 62358/mysqld [root@db01 ~]# kill 62358 #<==kill掉进程的pid [root@db01 ~]# netstat -tunlp|grep 3306 #<==mysql进程已关闭 [root@db01 ~]# mysqld_safe --help #<==利用mysqld_safe命令指定配置文件,跳过授权表来破密码 [root@db01 ~]# mysqld_safe --defaults-file=/data/3306/my.cnf --skip-grant-tables 2>&1 >/dev/null & [root@db01 ~]# mysql -S /data/3306/mysql.sock #<==无密码登录进多实例3306 mysql> select user,host,password from mysql.user where user='root' and host='localhost'; +------+-----------+-------------------------------------------+ | user | host | password | +------+-----------+-------------------------------------------+ | root | localhost | *FE28814B4A8B3309DAC6ED7D3237ADED6DA1E515 | +------+-----------+-------------------------------------------+ 1 row in set (0.00 sec)#<==先看下mysql库,user表里的字段内容 mysql> update mysql.user set password=PASSWORD("oldboy123") where user='root' and host='localhost'; #<==利用update命令来更新root@localhost用户的密码 mysql> flush privileges; #<==记得刷新授权表,否则不会立马生效的 Query OK, 0 rows affected (0.00 sec) [root@db01 ~]# sed -i 's#mysql_pwd="oldboy456"#mysql_pwd="oldboy123"#g' /data/3306/mysql [root@db01 ~]# grep mysql_pwd= /data/3306/mysql #<==修改启动脚本的密码,才能利用命令来停止服务 mysql_pwd="oldboy123" [root@db01 ~]# /data/3306/mysql stop #<==先停掉服务,因为有跳过授权表的参数在 Stoping MySQL... [1]+ Done mysqld_safe --defaults-file=/data/3306/my.cnf --skip-grant-tables 2>&1 > /dev/null [root@db01 ~]# /data/3306/mysql start #<==启动 Starting MySQL... [root@db01 ~]# ss -tunlp|grep 3306 #<==侦听正常 tcp LISTEN 0 600 *:3306 *:* users:(("mysqld",66695,12)) [root@db01 ~]# mysql -uroot -poldboy123 -S /data/3306/mysql.sock #<==成功登录
1.21 MySQL内中文数据乱码的原理及如何防止乱码?(可选)。
保证以下的字符集一致即可
mysql> show VARIABLES like 'character_set%'; +--------------------------+--------------+ | Variable_name | Value | +--------------------------+--------------+ | character_set_client | utf8 |#<==客户端字符集 | character_set_connection | utf8 |#<==客户端连接字符集,配置文件指定或建库表指定 | character_set_database | utf8 |#<==数据库的字符集 | character_set_filesystem | binary |#<==文件系统字符集 | character_set_results | utf8 |#<==客户端返回结果字符集 | character_set_server | utf8 |#<==服务器字符集,配置文件指定或建库表指定 | character_set_system | utf8 |#<==Linux系统的字符集 | character_sets_dir | /application/mysql-5.5.49/share/charsets/ | +--------------------------+-------------------------------------------+ 8 rows in set (0.01 sec)
1.22 在把id列设置为主键,在name字段上创建普通索引。
alter table test add primary key (id); alter table test add index index_name (name);
1.23 在字段name后插入手机号字段(shouji),类型char(11)。
alter table test add shouji char(11);
1.24 所有字段上插入2条记录(自行设定数据)
insert into test val-ues('4','18','chen','15298914487'),('5','19','he','15298913929');
1.25 在手机字段上对前8个字符创建普通索引。
alter table test add index index_shouji (shouji(8));
1.26 查看创建的索引及索引类型等信息。
desc test; show create table test\G show index from test\G
1.27 删除name,shouji列的索引。
alter table test drop index index_name; alter table test drop index index_shouji;
1.28 对name列的前6个字符以及手机列的前8个字符组建联合索引。
alter table test drop index index_shouji;
1.29 查询手机号以152开头的,名字为chen的记录(此记录要提前插入)。
select * from test where name='chen' and shouji like '152%';
1.30 查询上述语句的执行计划(是否使用联合索引等)。
explain select * from test where name='chen' and shouji like '152%'\G
1.31 把test表的引擎改成MyISAM。
alter table test ENGINE=MYISAM;
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
HP P2000 RAID-5两块盘离线的数据恢复报告
1. 故障描述 本案例是HP P2000的存储vmware exsi虚拟化平台,由RAID-5由10块lT硬盘组成,其中6号盘是热备盘,由于故障导致RAID-5磁盘阵列的两块盘掉线,表现为两块硬盘亮黄灯。 经用户方维护人员检测,故障硬盘应为物理故障,表现为:序列号无法读取,在SAS扩展卡上硬盘无法识别。 2. 数据备份与修复 故障发生后用户方工程师与我公司联系,经过详细咨询,了解到故障比较严重,必须把RAID-5磁盘阵列带到我公司进行检测,检测RAID-5的每块成员盘是物理故障(磁头损坏或者盘片划伤)还是逻辑故障。由于情况紧急,工程师在接到原盘以后,立即着手准备检测。对能识别的好盘用连接到北亚镜像服务器上使用WinHex做扇区级镜像,同时对不能识别的坏盘进行检测。 首先将坏盘连接到外部的SAS扩展卡上,加电后通过硬盘工作声音判断硬盘电机能够起转,但是磁头没有进行寻道操作,于是尝试把硬盘PCB分离下来对HDA组件氧化部分进行清洁操作,将PCB还原后故障依旧。于是和客户沟通使用6号热备盘的好PCB替换到故障盘上进行尝试性修复,再将故障盘PCB上的ROM芯片替换到6号盘的好PCB上面...
- 下一篇
第十五章 iptables
15.1 iptables简介 iptables是与最新的3.5版本Linux内核集成的IP信息包过滤系统。如果Linux系统连接到因特网或LAN、服务器或连接LAN和因特网的代理服务器,则该系统有利于在Linux系统上更好地控制IP信息包过滤和防火墙配置。 防火墙在做信息包过滤决定时,有一套遵循和组成的规则,这些规则存储在专用的信息包过滤表中,而这些表集成在Linux内核中。在信息包过滤表中,规则被分组放在我们所谓的链(chain)中。而netfilter/iptables IP信息包过滤系统是一款功能强大的工具,可用于添加、编辑和移除规则。 虽然netfilter/iptables IP信息包过滤系统被称为单个实体,但它实际上由两个组件netfilter和iptables组成。 netfilter组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。 iptables组件是一种工具,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。除非您正在使用Red Ha...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Red5直播服务器,属于Java语言的直播服务器
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS8安装Docker,最新的服务器搭配容器使用
- MySQL8.0.19开启GTID主从同步CentOS8
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS7设置SWAP分区,小内存服务器的救世主