忘记数据库密码怎么办?来,我教你啊
Posted 老张学coding
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了忘记数据库密码怎么办?来,我教你啊相关的知识,希望对你有一定的参考价值。
文章目录
一、数据库的基本操作
1.1、创建数据库(create)
基本语法:
- 直接创建数据库
mysql> create database 数据库名;
- 判断数据库是否存在然后创建
create database if not exists 数据库名;
- 指定创建的数据库的所使用字符集
create database 数据库名 character set 字符集;
案例:创建数据库的案例
#创建db1数据库
create database db1;
#如果存在不报错(if not exists)
create database if not exists 数据库名;
注意:不能创建相同名字的数据库!
#创建db2并且指定字符集(如果有这个数据库就不能使用这条命令)
create database db2 default character set gbk;
操作:
1.2、 查看已创建的数据库(show)
- 查看所有数据库
show databases;
- 查看某个数据库
show create database 数据库名;
操作:
1.3、 修改数据库信息(alter)
说明:在MySQL5以后的版本中,MySQL不支持更改数据库的名称。我们所谓的修改数据库主要修改的是数据库的编码格式。
- 修改数据库的编码格式(也就是字符集)
alter database 数据库名 character set 字符集;
操作:
1.4、 删除数据库(drop)
drop database 数据库名;
案例:删除db2数据库
drop database db2;
1.5、 使用数据库(use)
- 查看正在使用的数据库
select database(); --使用mysql中的全局函数
- 使用/切换数据库
use database 数据库名;
操作:
二、数据表的基本操作
2.1、创建表(create)
2.1.1、创建表的格式
create table 表名 (
字段1 字段类型1,
字段2 字段类型2,
字段3 字段类型3,
);
案例:创建stu表,拥有三个字段(id,name,sex)
create table stu ( id int ,name varchar(10),sex char(2));
操作:
关键字说明:
关键字 | 说明 |
---|---|
create | 创建 |
table | 表 |
2.1.2、创建临时表
#临时表创建成功之后,使用SHOW TABLES命令是看不到创建的临时表的,临时表会在连接退出后被销毁。 如果在退出连接之前,也可以可执行增删改查等操作,比如使用 DROP TABLE 语句手动直接删除临时表。
基本命令:CREATE TEMPORARY TABLE 表名 (字段1 数据类型,字段2 数据类型[,...][,PRIMARY KEY (主键名)]);
案例:
create temporary table test04 (id int not null,name varchar(20) not null,cardid varchar(18) not null unique key,primary key (id));
show tables;
insert into TEST04 values (1,'gyt','12345');
select * from test04;
操作:
总结:
- 临时表创建后show不到
- desc可以看到表的结构
- select可以使用临时表,也可增删改查
- 连接退出去后自动销毁
2.1.3、克隆表
- 方法一:用like,只能克隆表结构,要想数据记录也复制进去,必须要insert插入才行
#只能克隆出他的表结构,里面的数据记录无法克隆下来
#创建一个和旧表的结构相同的表
create table 新表名 like 旧表名;
#查看表中的记录
select * from 新表名 ;
#查看表的结构
desc 新表名 ;
#将旧表中的记录插入到新表中
insert into 新表名 select * from 旧表名;
select * from 新表名;
案例:复制一个表stu2,和stu一样的结构
操作:
- 方法二:直接创建表导入数据
create table 新表名 (select * from 旧表名);
select * from 新表名;
案例:复制一个表stu3,和stu一样的结构以及数据
select * from stu;
create table stu3 (select * from stu);
select * from stu3;
操作:
2.1.4、数据类型(int char varchar double date)
类型 | 说明 |
---|---|
int | 整型 |
double | 浮点型 |
varchar | 字符串类型 |
date | 日期类型 |
2.2、查看表(show,desc)
- 查看所有表(当前数据库)
show tables;
- 查看表结构
desc 表名;
- 查看创建表的SQL语句
show create table 表名;
操作:
2.3、删除表(drop)
- 直接删除
drop table 表名;
- 判断是否存在,存在的话再删除
drop table if exists 表名;
2.4、修改表结构(add,modify,change,drop,character set)
2.4.1、添加表字段(add)
#添加字段,默认时在字段后面加
alter table 表名 add 新字段名称 新字段类型;
#指定在哪个字段后面或者前面
alter table 表名 add 新字段名称 新字段类型 first|after 其他字段名称;
操作:
###2.4.2、修改字段类型(modify)
alter table 表名 modify 列名 新类型 ;
操作:
2.4.2、修改字段名和字段类型(change)
alter table 表名 change 旧列名 新列名 新类型 ;
案例:将表中的class字段改为classes字段并且修改类型为varchar(15)
alter table stu3 change class classes varchar(15) ;
desc stu3;
操作:
2.4.3、删除某列(字段) (drop)
ALTER TABLE 表名 DROP 列名;
desc stu2;
操作:
2.4.4、修改表名(rename)
#重命名,在当前数据库中修改表名(数据还在)
rename TABLE 旧表名 to 新表名;
或者
alter table 旧表名 rename 新表名 ;
#移动表到另一个库里并重命名
rename table db01.t1 to db02.t11;
或者
alter table db01.t1 rename db02.t11;
案例1:当前数据库中重命名stu3改为stu2
rename table stu3 to stu2;
show tables;
操作:
案例2:
alter table stu2 rename stu3;
操作:
案例3:数据库db1中的表stu3移到数据库db2中,并且改名为stu2
alter table db1.stu3 rename db2.stu2;
use db2;
show tables;
2.4.5、修改字符集 (character set)
alter table 表名 character set 字符集;
2.4.6、创建外键约束
#保证数据的完整性和一致性 外键的定义:
#如果同一个属性字段x在表一中是主键,而在表二中不是主键,则字段x称为表二的外键。
#主键表和外键表的理解:
#1、以公共关键字作为主键的表为主键表(父表、主表)
#2、以公共关键字作为外键的表为外键表(从表、外表)
注意:与外键关联的主表的字段必须设置为主键,要求从表不能是临时表,主从表的字段具有相同的数据类型、字符长度和约束
示例:
create table TEST04 (hobid int(4),hobname varchar(50));
create table TEST05 (id int(4) primary key auto_increment,name varchar(50),age int(4),hobid int(4));
alter table TEST04 add constraint PK_hobid primary key(hobid);
alter table TEST05 add constraint FK_hobid foreign key(hobid) references TEST04(hobid);
操作:
例:添加数据记录
insert into TEST05 values (1,'zhangsan','20',1);
insert into TEST04 values (1,'sleep');
insert into TEST05 values (1,'zhangsan',20,1);
操作:
例:drop table TEST04;
drop table TEST05;
drop table TEST04;
操作:
注:如果要删除外键约束字段 ,先删除外键约束,再删除外键名
show create table TEST05;
alter table TEST05 drop foreign key FK_hobid;
alter table TEST05 drop key FK_hobid;
desc TEST05;
2.4.7、mysql常见的6种约束
主键约束 | primary key |
---|---|
外键约束 | foreign key |
非空约束 | not null |
唯一约束 | unique[key|index] |
默认值约束 | default |
自增约束 | auto_increment |
三、数据库用户管理
3.1、新建用户
格式:
create user '用户名'@'来源地址' [IDENTIFIED BY [PASSWORD] '密码'];
###########################
‘用户名’:指定将创建的用户名
‘来源地址’:指定新创建的用户可在哪些主机上登录,可使用IP地址、网段、主机名的形式,本地用户可用localhost,允许任意主机登录可用通配符%
‘密码’:若使用明文密码,直接输入’密码’,插入到数据库时由Mysql自动加密; ------若使用加密密码,需要先使用SELECT PASSWORD(‘密码’); <br>获取密文,再在语句中添加 PASSWORD ‘密文’; ------若省略“IDENTIFIED BY”部分,则用户的密码将为空(不建议使用)
示例:
例:create user 'zhangsan'@'localhost' identified by '123123';
select password('123123');
create user 'lisi'@'localhost' identified by password '*E56A114692FE0DE073F9A1DD68A00EEB9703F3F1';
操作:
3.2、查看用户信息
说明:创建的用户信息保存在mysql数据的user表中
#切换数据库
use mysql;
#查看表中这三个字段的信息
select user ,authentication_string,host from user;
操作:
3.3、重命名用户(rename)
#重命名
rename user 'zcq'@'localhost' to 'zs'@'localhost';
#查看重命名是否成功
select user ,authentication_string,host from user;
3.4、删除用户(drop)
#删除用户
drop user 'zs'@'localhost';
#查看重命名是否成功
select user ,authentication_string,host from user;
操作:
错误示范:后面必须加主机,IP网段,或者IP地址
drop gyt;
drop user gyt;
错误操作:
3.5、修改用户密码(已经进入数据库)
3.5.1、修改当前用户密码
#修改密码(之前没设置密码也一样可以)
set password=password('88888888');
#查看88888888的密文表示(这和有没有这个密码没有关系,就像进制转换)
select password '88888888';
#查看密码是否修改成功
select user,authentication_string from user;
#退出当前用户
quit
#登录
mysql -u root -p
回车输入密码
注意:用户是空密码也一样可以用这种方法
操作:
3.5.2、修改其他用户密码
#修改其他用户的密码
set password for 'gyt'@'localhost'=password('abc123');
#使用mysql数据库
use mysql;
查看user表中的用户以及密文密码
select user ,authentication_string from user;
操作:
3.6、忘记用户密码如何登录(没登录数据库)
3.6.1、修改 /etc/my.cnf 配置文件,不使用密码直接登录到 mysql
vim /etc/my.cnf
#添加
skip-grant-tables #添加,使登录mysql不使用授权表
#重启服务
systemctl restart mysqld
mysql
四、数据的增删改查(insert,delete,update,select)
insert 增加
delete 删除
update 修改
select 查询
4.1、数据的增加操作(insert)
基本语法:
insert into 数据表 (字段1,字段2,字段3...) values (字段1的值,字段2的值,字段3的值...);
或者是
insert into 数据表 values (字段1的值,字段2的值,字段3的值...);
#设置自增的话用上面的一种,第二中的话是给指定的字段插入数据
案例1:
use db1;
create table stu ( id int ,name varchar(10),sex char(2));
insert into stu values (1,'zs','男');
insert into stu values (2,'ls','女');
select * from stu ;
4.2、数据的查询操作(select)
基本语法:
select * from stu ;
或
select * from 数据表名称 [where 查询条件];
或
#指定字段
select id,name,sex from 数据表名称 [where 查询条件];
#[ ]里面的可有可无
案例1:查询所有记录
select * from stu ;
操作:
案例2:查询性别是男的所有记录,显示所有字段
select * from stu where sex='男';
案例3:查询性别是男的,表格只显示id,sex
select id,sex from stu where sex='男';
操作:
说明:where条件除了=还有>,<等
4.3、数据的修改操作(update)
基本语法:
update 数据表名 set 字段1=更新后的值,字段2=更新后的值,... where 更新条件;
#where不加也行,一般情况下都加
案例:把性别是男的都设置为名字为zs,id为111
update stu set id=111,name='zs' where sex='男';
操作:
4.4、数据的删除操作(delete,truncate)
- 方法一:delete删除
#DELETE清空表后,返回的结果内有删除的记录条目;DELETE工作时是一行一行的删除记录数据的;如果表中有自增长字段,使用DELETE FROM 删除所有记录后,再次新添加的记录会从原来最大的记录 ID 后面继续自增写入记录
delete from 表名;
案例:
select * from stu4;
delete from stu4;
select * from stu4;
insert into stu4 (name,sex) values ('老三','男');
select * from stu4;
操作:
- 方法二:truncate删除
select * from 表名;
truncate table 表名;
#测试 truncate与delete的不同之处,在于如果id是自增的话,用delete删除记录后再添加记录从之前的最大id下一位算起,而
insert into TEST03 (name,cardid) values ('wangwu','33333');
select * from TEST03;
delete from与truncate区别在哪里?
- delete:删除数据记录
- 数据操作语言(DML)
- 在事务控制里,DML语句要么commit,要么rollback
- 删除大量记录速度慢,只删除数据不回收高水位线
- 可以带条件删除
- truncate:删除所有数据记录
- 数据定义语言(DDL)
- 不在事务控制里,DDL语句执行前会提交前面所有未提交的事务
- 清里大量数据速度快,回收高水位线(high water mark)
- 不能带条件删除
以上是关于忘记数据库密码怎么办?来,我教你啊的主要内容,如果未能解决你的问题,请参考以下文章
基础篇:异步编程不会?我教你啊!CompeletableFuture