Erweiterte Bedienung der MySQL-Datenbank (detailliertes Bild und Text)

Erweiterte Operationen für Datentabellen

Vorbereitung: Installieren Sie die MySQL-Datenbank

Shell-Skript Ein-Klick-Deployment-Quellcode kompilieren und installieren 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;

Fügen Sie hier eine Bildbeschreibung ein


Eins, Klontabelle

Generieren Sie die Datensätze der Datentabelle in eine neue Tabelle

Methode eins

例:create table TEST01 like TEST;
select * from TEST01;

desc TEST01;
insert into TEST01 select * from TEST;
select * from TEST01;

Fügen Sie hier eine Bildbeschreibung ein

Methode Zwei

例:create table TEST02 (select * from TEST);
select * from TEST02;

Fügen Sie hier eine Bildbeschreibung ein

2. Leeren Sie die Tabelle und löschen Sie alle Daten in der Tabelle

Methode eins

delete from TEST02;

#DELETE Nach dem Leeren der Tabelle werden Datensatzeinträge im zurückgegebenen Ergebnis gelöscht. DELETE löscht Datensatzdaten zeilenweise. Wenn die Tabelle Felder mit Selbstwachstum enthält, löschen Sie alle Datensätze mit DELETE FROM und die neu hinzugefügten Datensätze werden fortfahren, um Datensätze nach der ursprünglich größten Datensatz-ID zu erhöhen und zu schreiben

Fügen Sie hier eine Bildbeschreibung ein

例: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;

Fügen Sie hier eine Bildbeschreibung ein

Methode Zwei

例:select * from TEST03;
truncate table TEST03;
insert into TEST03 (name,cardid) values ('wangwu','33333');
select * from TEST03;

#TRUNCATE Nach dem Löschen der Tabelle werden keine gelöschten Einträge zurückgegeben. Wenn TRUNCATE funktioniert, wird die Tabellenstruktur unverändert neu erstellt. In Bezug auf die Geschwindigkeit ist TRUNCATE schneller als DELETE, um die Tabelle zu löschen, nachdem TRUNCATE TABLE zum Löschen der Tabelle verwendet wurde Daten in der Tabelle ändert sich die ID von 1. Starten Sie die Aufnahme erneut.

Fügen Sie hier eine Bildbeschreibung ein


Drittens erstellen Sie eine temporäre Tabelle

Nachdem die temporäre Tabelle erfolgreich erstellt wurde, kann die erstellte temporäre Tabelle mit dem Befehl SHOW TABLES nicht angezeigt werden. Die temporäre Tabelle wird nach dem Beenden der Verbindung zerstört. Vor dem Beenden der Verbindung können Sie auch Vorgänge wie Hinzufügen, Löschen, Ändern und Überprüfen ausführen, z. B. die Anweisung DROP TABLE verwenden, um die temporäre Tabelle manuell direkt zu löschen.

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;

Fügen Sie hier eine Bildbeschreibung einFügen Sie hier eine Bildbeschreibung ein

Viertens: Erstellen Sie Fremdschlüsseleinschränkungen

Stellen Sie die Integrität und Konsistenz
der Daten sicher. Die Definition eines Fremdschlüssels: Wenn dasselbe Attributfeld x der Primärschlüssel in Tabelle 1 ist, jedoch nicht der Primärschlüssel in Tabelle 2, wird das Feld x als Fremdschlüssel von bezeichnet Tabelle 2.

Verständnis von Primärschlüsseltabellen und Fremdschlüsseltabellen:
1. Tabellen mit gemeinsamen Schlüsselwörtern als Primärschlüssel sind Primärschlüsseltabellen (übergeordnete Tabelle, Primärtabelle).
2. Tabellen mit gemeinsamen Schlüsselwörtern als Fremdschlüssel sind Fremdschlüsseltabellen (aus Tabelle, Fremdtabelle).

Hinweis: Die Felder der Primärtabelle, die dem Fremdschlüssel zugeordnet sind, müssen als Primärschlüssel festgelegt werden, und die Sekundärtabelle kann keine temporäre Tabelle sein. Die Felder der Primär- und Sekundärtabelle haben denselben Datentyp, dieselbe Zeichenlänge und dieselben Einschränkungen

例: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);

Fügen Sie hier eine Bildbeschreibung ein

例:添加数据记录
insert into TEST05 values (1,'zhangsan','20',1);
insert into TEST04 values (1,'sleep');
insert into TEST05 values (1,'zhangsan',20,1);

Fügen Sie hier eine Bildbeschreibung ein

例:drop table TEST04;
drop table TEST05;
drop table TEST04;

Fügen Sie hier eine Bildbeschreibung ein
Hinweis: Wenn Sie ein Fremdschlüsseleinschränkungsfeld löschen möchten
, löschen Sie zuerst die Fremdschlüsseleinschränkung und dann den Fremdschlüsselnamen, der hier nicht gezeigt wird

show create table TEST05;
alter table TEST05 drop foreign key FK_hobid;
alter table TEST05 drop key FK_hobid;
desc TEST05;

6 allgemeine Einschränkungen in MySQL

Primärschlüsseleinschränkung Primärschlüssel
Fremdschlüsseleinschränkung Unbekannter Schlüssel
Nicht leere Einschränkung nicht null
Einzigartige Beschränkung einzigartiger Schlüssel
Standardwertbeschränkungen Standard
Selbsterhöhungsbeschränkung auto_increment

Fünftens: Datenbankbenutzerverwaltung

1. Erstellen Sie einen neuen Benutzer

CREATE USER '用户名'@'来源地址' [IDENTIFIED BY [PASSWORD] '密码'];

'Benutzername': Geben Sie den Benutzernamen an, der erstellt werden soll

'Quelladresse': Geben Sie den Host an, auf dem sich der neu erstellte Benutzer anmelden kann. Sie können die Form der IP-Adresse, des Netzwerksegments und des Hostnamens verwenden. Lokale Benutzer können localhost verwenden und jeder Host kann sich mit Platzhalter% anmelden

'Passwort': Wenn Sie ein Klartext-Passwort verwenden, geben Sie direkt das 'Passwort' ein. Es wird automatisch von MySQL verschlüsselt, wenn es in die Datenbank eingefügt wird.
------ Wenn Sie ein verschlüsseltes Passwort verwenden, müssen Sie SELECT verwenden PASSWORD ('Passwort'); um den Chiffretext zu erhalten, fügen Sie dann PASSWORT 'Chiffretext' in die Anweisung ein;
------ Wenn der Teil "IDENTIFIED BY" weggelassen wird, ist das Passwort des Benutzers leer (nicht empfohlen).

例:create user 'zhangsan'@'localhost' identified by '123123';
select password('123123');
create user 'lisi'@'localhost' identified by password '*E56A114692FE0DE073F9A1DD68A00EEB9703F3F1';

Fügen Sie hier eine Bildbeschreibung ein


2. Benutzerinformationen anzeigen

Der erstellte Benutzer wird in der Benutzertabelle der MySQL-Datenbank gespeichert

USE mysql;
SELECT User,authentication_string,Host from user;

Fügen Sie hier eine Bildbeschreibung ein

3. Benennen Sie den Benutzer um

RENAME USER 'zhangsan'@'localhost' TO 'wangwu'@'localhost';
SELECT User,authentication_string,Host from user;

Fügen Sie hier eine Bildbeschreibung ein

4. Löschen Sie Benutzer

DROP USER 'lisi'@'localhost';
SELECT User,authentication_string,Host from user;

Fügen Sie hier eine Bildbeschreibung ein

5. Ändern Sie das Kennwort des aktuell angemeldeten Benutzers

SET PASSWORD = PASSWORD('abc123');
quit
mysql -u root -p

Fügen Sie hier eine Bildbeschreibung ein

6. Ändern Sie andere Benutzerkennwörter

SET PASSWORD FOR 'wangwu'@'localhost' = PASSWORD('abc123');
use mysql;
SELECT User,authentication_string,Host from user;

7. Die Lösung, um das Root-Passwort zu vergessen

1, Ändern Sie die Konfigurationsdatei /etc/my.cnf und melden Sie sich direkt bei mysql an, ohne ein Kennwort zu verwenden

vim /etc/my.cnf
[mysqld]
skip-grant-tables					#添加,使登录mysql不使用授权表
systemctl restart mysqld
mysql								#直接登录

Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein

2, Verwenden Sie update, um das Root-Passwort zu ändern und die Datenbank zu aktualisieren

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
112233

Fügen Sie hier eine Bildbeschreibung ein

Sechs, Datenbankbenutzerberechtigung

1. Erteilen Sie Berechtigungen

GRANT语句:专门用来设置数据库用户的访问权限。当指定的用户名不存在时,GRANT语句将会创建新的用户;当指定的用户名存在时,GRANT 语句用于修改用户信息。

GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'来源地址' [IDENTIFIED BY '密码'];

#权限列表:用于列出授权使用的各种数据库操作,以逗号进行分隔,如“select,insert,update”。使用“all”表示所有权限,可授权执行任何操作。

#数据库名.表名:用于指定授权操作的数据库和表的名称,其中可以使用通配符“*”。*例如,使用“kgc.*”表示授权操作的对象为 kgc数据库中的所有表。

#'用户名@来源地址':用于指定用户名称和允许访问的客户机地址,即谁能连接、能从哪里连接。来源地址可以是域名、IP 地址,还可以使用“%”通配符,表示某个区域或网段内的所有地址,如“%.lic.com”、“192.168.184.%”等。

#IDENTIFIED BY:用于设置用户连接数据库时所使用的密码字符串。在新建用户时,若省略“IDENTIFIED BY”部分, 则用户的密码将为空。

#Erlauben Sie dem Benutzer wangwu, die Datensätze aller Tabellen in der CLASS-Datenbank lokal abzufragen, verbieten Sie jedoch das Abfragen der Datensätze von Tabellen in anderen Datenbanken.

例:
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;

#Erlauben Sie dem Benutzer wangwu, lokal und remote eine Verbindung zu MySQL herzustellen und über alle Berechtigungen zu verfügen.

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;

2. Berechtigungen anzeigen

SHOW GRANTS FOR 用户名@来源地址;

例:
SHOW GRANTS FOR 'wangwu'@'localhost';

3. Widerruf der Autorität

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';

Die Berechtigung #USAGE kann nur für die Datenbankanmeldung verwendet werden und kann keine Vorgänge ausführen. Die Berechtigung USAGE kann nicht wiederverwendet werden, dh REVOKE kann keine Benutzer löschen.

flush privileges;

Ich denke du magst

Origin blog.csdn.net/weixin_51432770/article/details/113154390
Empfohlen
Rangfolge