忘记数据库密码怎么办?来,我教你啊

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

不会用配置文件(ini)去设置代码中的变量?我教你啊!

提升拉新率!我教你啊

MySQL数据库忘记密码怎么办?教你一招

威联通(QNAP)NAS忘记密码怎么办?手把手教你!请收藏!关键时刻有用!

不懂如何用 R 语言做数据挖掘?我们教你啊:)