mysql密码高级_MySQL数据库高级操作(图文详解)
數據表高級操作
準備工作:安裝MySQL數據庫
create database CLASS;
use CLASS;
create table TEST (id int not null,name char(20) not null,cardid varchar(18) not null unique key,primary key (id));
insert into TEST(id,name,cardid) values (1,'zhangsan','123123');
insert into TEST(id,name,cardid) values (2,'lisi','1231231');
insert into TEST(id,name,cardid) values (3,'wangwu','12312312');
select * from TEST;1
2
3
4
5
6
7
8
9
10
11
一、克隆表
將數據表的數據記錄生成到新的表中
方法一
例:create table TEST01 like TEST;
select * from TEST01;
desc TEST01;
insert into TEST01 select * from TEST;
select * from TEST01;1
2
3
4
5
6
方法二
例:create table TEST02 (select * from TEST);
select * from TEST02;1
2
二、清空表,刪除表內的所有數據
方法一
delete from TEST02;1
#DELETE清空表后,返回的結果內有刪除的記錄條目;DELETE工作時是一行一行的刪除記錄數據的;如果表中有自增長字段,使用DELETE FROM 刪除所有記錄后,再次新添加的記錄會從原來最大的記錄 ID 后面繼續自增寫入記錄
例:create table if not exists TEST03 (id int primary key auto_increment,name varchar(20) not null,cardid varchar(18) not null unique key);
show tables;
insert into TEST03 (name,cardid) values ('zhangsan','11111');
select * from TEST03;
delete from TEST03;
insert into TEST03 (name,cardid) values ('lisi','22222');
select * from TEST03;1
2
3
4
5
6
7
8
9
方法二
例:select * from TEST03;
truncate table TEST03;
insert into TEST03 (name,cardid) values ('wangwu','33333');
select * from TEST03;1
2
3
4
#TRUNCATE 清空表后,沒有返回被刪除的條目;TRUNCATE 工作時是將表結構按原樣重新建立,因此在速度上 TRUNCATE 會比 DELETE 清空表快;使用 TRUNCATE TABLE 清空表內數據后,ID 會從 1 開始重新記錄。
三、創建臨時表
臨時表創建成功之后,使用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,'haha','12345');
select * from TEST04;1
2
3
4
5
6
7
四、創建外鍵約束
保證數據的完整性和一致性
外鍵的定義:如果同一個屬性字段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);1
2
3
4
5
例:添加數據記錄
insert into TEST05 values (1,'zhangsan','20',1);
insert into TEST04 values (1,'sleep');
insert into TEST05 values (1,'zhangsan',20,1);1
2
3
4
例:drop table TEST04;
drop table TEST05;
drop table TEST04;1
2
3
注:如果要刪除外鍵約束字段
先刪除外鍵約束,再刪除外鍵名,此處不演示
show create table TEST05;
alter table TEST05 drop foreign key FK_hobid;
alter table TEST05 drop key FK_hobid;
desc TEST05;1
2
3
4
MySQL中6種常見的約束
主鍵約束
primary key
外鍵約束
foreign key
非空約束
not null
唯一約束
unique [key
默認值約束
default
自增約束
auto_increment
五、數據庫用戶管理
1、新建用戶
CREATE USER '用戶名'@'來源地址' [IDENTIFIED BY [PASSWORD] '密碼'];1
‘用戶名’:指定將創建的用戶名
‘來源地址’:指定新創建的用戶可在哪些主機上登錄,可使用IP地址、網段、主機名的形式,本地用戶可用localhost,允許任意主機登錄可用通配符%
‘密碼’:若使用明文密碼,直接輸入’密碼’,插入到數據庫時由Mysql自動加密;
------若使用加密密碼,需要先使用SELECT PASSWORD(‘密碼’); 獲取密文,再在語句中添加 PASSWORD ‘密文’;
------若省略“IDENTIFIED BY”部分,則用戶的密碼將為空(不建議使用)
例:create user 'zhangsan'@'localhost' identified by '123123';
select password('123123');
create user 'lisi'@'localhost' identified by password '*E56A114692FE0DE073F9A1DD68A00EEB9703F3F1';1
2
3
2、查看用戶信息
創建后的用戶保存在 mysql 數據庫的 user 表里
USE mysql;
SELECT User,authentication_string,Host from user;1
2
3、重命名用戶
RENAME USER 'zhangsan'@'localhost' TO 'wangwu'@'localhost';
SELECT User,authentication_string,Host from user;1
2
4、刪除用戶
DROP USER 'lisi'@'localhost';
SELECT User,authentication_string,Host from user;1
2
5、修改當前登錄用戶密碼
SET PASSWORD = PASSWORD('abc123');
quit
mysql -u root -p1
2
3
6、修改其他用戶密碼
SET PASSWORD FOR 'wangwu'@'localhost' = PASSWORD('abc123');
use mysql;
SELECT User,authentication_string,Host from user;1
2
3
7、忘記 root 密碼的解決辦法
1、修改 /etc/my.cnf 配置文件,不使用密碼直接登錄到 mysql
vim /etc/my.cnf
[mysqld]
skip-grant-tables #添加,使登錄mysql不使用授權表
systemctl restart mysqld
mysql #直接登錄1
2
3
4
5
2、使用 update 修改 root 密碼,刷新數據庫
UPDATE mysql.user SET AUTHENTICATION_STRING = PASSWORD('112233') where user='root';
FLUSH PRIVILEGES;
quit
再把 /etc/my.cnf 配置文件里的 skip-grant-tables 刪除,并重啟 mysql 服務。
mysql -u root -p
1122331
2
3
4
5
6
7
六、數據庫用戶授權
1、授予權限
GRANT語句:專門用來設置數據庫用戶的訪問權限。當指定的用戶名不存在時,GRANT語句將會創建新的用戶;當指定的用戶名存在時,GRANT 語句用于修改用戶信息。
GRANT 權限列表 ON 數據庫名.表名 TO '用戶名'@'來源地址' [IDENTIFIED BY '密碼'];1
2
3
#權限列表:用于列出授權使用的各種數據庫操作,以逗號進行分隔,如“select,insert,update”。使用“all”表示所有權限,可授權執行任何操作。
#數據庫名.表名:用于指定授權操作的數據庫和表的名稱,其中可以使用通配符“*”。*例如,使用“kgc.*”表示授權操作的對象為 kgc數據庫中的所有表。
#'用戶名@來源地址':用于指定用戶名稱和允許訪問的客戶機地址,即誰能連接、能從哪里連接。來源地址可以是域名、IP 地址,還可以使用“%”通配符,表示某個區域或網段內的所有地址,如“%.lic.com”、“192.168.184.%”等。
#IDENTIFIED BY:用于設置用戶連接數據庫時所使用的密碼字符串。在新建用戶時,若省略“IDENTIFIED BY”部分, 則用戶的密碼將為空。1
2
3
4
5
6
7
#允許用戶wangwu在本地查詢 CLASS 數據庫中所有表的數據記錄,但禁止查詢其他數據庫中的表的記錄。
例:
GRANT select ON CLASS.* TO 'wangwu'@'localhost' IDENTIFIED BY '123456';
quit;
mysql -u wangwu -p
123456
show databases;
use information_schema;
show tables;
select * from INNODB_SYS_TABLESTATS;1
2
3
4
5
6
7
8
9
#允許用戶wangwu在本地遠程連接 mysql ,并擁有所有權限。
quit;
mysql -u root -p112233
GRANT ALL PRIVILEGES ON *.* TO 'wangwu'@'localhost' IDENTIFIED BY '123456';
flush privileges;
quit
mysql -u wangwu -p123456
create database SCHOOL;1
2
3
4
5
6
7
8
9
2、查看權限
SHOW GRANTS FOR 用戶名@來源地址;
例:
SHOW GRANTS FOR 'wangwu'@'localhost';1
2
3
4
3、撤銷權限
REVOKE 權限列表 ON 數據庫名.表名 FROM 用戶名@來源地址;
例:quit;
mysql -u root -p112233
SHOW GRANTS FOR 'wangwu'@'localhost';
REVOKE SELECT ON "CLASS".* FROM 'wangwu'@'localhost';
SHOW GRANTS FOR 'wangwu'@'localhost';1
2
3
4
5
6
7
8
#USAGE權限只能用于數據庫登陸,不能執行任何操作;USAGE權限不能被回收,即 REVOKE 不能刪除用戶。
flush privileges;1
文章來源: blog.csdn.net,作者:leec。,版權歸原作者所有,如需轉載,請聯系作者。
原文鏈接:blog.csdn.net/weixin_51432770/article/details/113154390
總結
以上是生活随笔為你收集整理的mysql密码高级_MySQL数据库高级操作(图文详解)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python绘图颜色代码_python
- 下一篇: mysql忘记密麻麻_mysql忘记密码