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 [email protected]\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密码丢了,如何找回实战?

[[email protected] ~]# netstat -tunlp|grep 3306 #<==先查看服务是否正常
tcp        0      0 0.0.0.0:3306            0.0.0.0:*          LISTEN      62358/mysqld
[[email protected] ~]# kill 62358 #<==kill掉进程的pid
[[email protected] ~]# netstat -tunlp|grep 3306 #<==mysql进程已关闭
[[email protected] ~]# mysqld_safe --help #<==利用mysqld_safe命令指定配置文件,跳过授权表来破密码
[[email protected] ~]# mysqld_safe --defaults-file=/data/3306/my.cnf --skip-grant-tables 2>&1 >/dev/null &
[[email protected] ~]# 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命令来更新[email protected]用户的密码
mysql> flush privileges; #<==记得刷新授权表,否则不会立马生效的
Query OK, 0 rows affected (0.00 sec)
[[email protected] ~]# sed -i ‘s#mysql_pwd="oldboy456"#mysql_pwd="oldboy123"#g‘ /data/3306/mysql
[[email protected] ~]# grep mysql_pwd= /data/3306/mysql #<==修改启动脚本的密码,才能利用命令来停止服务
mysql_pwd="oldboy123"
[[email protected] ~]# /data/3306/mysql stop #<==先停掉服务,因为有跳过授权表的参数在
Stoping MySQL...
[1]+  Done   mysqld_safe --defaults-file=/data/3306/my.cnf --skip-grant-tables 2>&1 > /dev/null
[[email protected] ~]# /data/3306/mysql start #<==启动
Starting MySQL...
[[email protected] ~]# ss -tunlp|grep 3306 #<==侦听正常
tcp    LISTEN     0      600          *:3306        *:*      users:(("mysqld",66695,12))
[[email protected] ~]# 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;

时间: 2024-10-15 04:43:32

MySQL必会基础命令的相关文章

Linux运维必会MySQL 30道基础命令

1.1登录数据库 mysql-uroot -poldboy123 -S/data/3306/mysql.sock 1.2查看数据库版本及当前登录用户是什么? mysql> select version(); +-----------+ | version() | +-----------+ | 5.6.36   | +-----------+ mysql>select user(); +----------------+ | user()        | +----------------+

Linux运维必会MySQL30道基础命令

Linux运维必会MySQL 30道基础命令 老男孩老师教学与培训核心思想:重目标.重思路.重方法.重实践.重习惯.重总结. 版权声明:余连辉 本系列文档为<老男孩 Linux 运维实战培训中心>内部教学用教案,只允许 VIP 学员 个人使用,为保护大家的学习利益,禁止私自传播,违者将取消 VIP 学员资格.严重者我们将法律起诉.如果你已经参加本培训,即视为你已无条件接受上述内容说明! 联系方式: 意见投诉信箱:[email protected] 网站运维交流群:114580181 24605

Linux运维常用的 MySQL基础命令

MySQL基础命令 ------------- 创建MySQL库,授权. >create database mysqldb character set utf8; >grant all privileges on mysqldb.* to 'mysqluser'@'localhost' identified by 'mysqlpasswd'; >flush privileges; 创建了mysqldb数据库,创建mysqluser用户,并授权mysqldb的所有权限.__________

决胜九月:mysql面试必会基础(一)

本博客摘自<MySQL必知必会>,对基础问题进行总结. 1.检索数据 (1)SELECT columnname FROM tablename:返回结果不一定和插入顺序相同,结果是无序的 (2)去掉重复的值 SELECT DISTINCT columnname FROM tablename (3)限制结果:limit SELECT * FROM tablename limit 5:结果不能超过5条 SELECT * FROM tablename limit 5,10:将返回从行5开始的10行.注

Mysql锁机制--概念、分类及基础命令

Mysql 系列文章主页 =============== 1 概念 在 Java 程序中,当多线程并发访问某个资源的时候,如果有非线程安全的操作,那么需要通过加锁来保护之.同理,在 Mysql 中,如果也有多个线程.多个事务并发访问某些资源(比如写同一行记录)时,也需要锁来保护,以确保数据的正确性. 2 分类 从对数据的操作类型来分: 读锁(共享锁):针对同一份数据,多个读操作可以同时进行而不会互相影响 写锁(排它锁):当前写操作没有完成前,会阻塞其它写和读操作 从对数据操作的粒度分: 表锁:偏

Mysql浅析-基础命令(一)

主要从以上篇幅来介绍mysql的一些知识点 一.Mysql简介 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件. 二.逻辑架构 三.Mysql基本命令 I.库 1. 创建数据库 语法 :create database 数据库名 #

MySQL 常用基础命令

一.启动与关闭 1.1 Linux下启动mysql 的命令: a. rpm包安装:service mysqld start b. 源码包安装:/usr/local/mysql/bin/mysqld_safe --user=mysql & 1.2 Linux下重启mysql 的命令: a. rpm包安装:service mysqld restart b. 源码包安装: 先关闭mysql /usr/local/mysql/bin/mysqladmin -uroot -p shutdown 再启动my

linux公司常用基础命令必知必会

基础命令分为六部分来介绍,都是一些公司里常用的命令做了下汇总:◆ 安装和登录命令:login.shutdown.halt.reboot.install.mount.umount.chsh.exit.last:◆ 文件处理命令:file.mkdir.grep.dd.find.mv.ls.diff.cat.ln:◆ 系统管理相关命令:df.top.free.quota.at.lp.adduser.groupadd.kill.crontab:◆ 网络操作命令:ifconfig.ip.ping.nets

Mysql DBA 高级运维学习笔记-Mysql常用基础命令实战

7.1 单实例mysql启动和关闭方法 (1)常规方法启动数据库 1.启动mysql服务命令 [[email protected] ~]# /etc/init.d/mysqld start Starting MySQL. SUCCESS! 2.查看mysql端口 [[email protected] ~]# ss -lnt|grep 3306 LISTEN 0 50*:3306 *:* 3.查看mysql进程 会启动两个进程第一个就是mysql_safe第二个是mysqld [[email pr