Linux-MySQL-Installation|Konfiguration|Betrieb|Deinstallation

Artikelverzeichnis

1. Deinstallieren Sie MySQL

1.1 Überprüfen Sie zunächst, ob auf dem System MySQL installiert ist

rpm -qa | grep -i mysql

Ausgang:

perl-DBD-MySQL-4.050-13.el9.x86_64
mysql-community-client-plugins-8.0.30-1.el9.x86_64
mysql-community-common-8.0.30-1.el9.x86_64
mysql-community-libs-8.0.30-1.el9.x86_64
mysql-community-client-8.0.30-1.el9.x86_64
mysql-community-icu-data-files-8.0.30-1.el9.x86_64
mysql-community-server-8.0.30-1.el9.x86_64

Wie Sie der Ausgabe entnehmen können, sind der von mir installierte MySQL-Server und -Client beide 8.0.30, und ich werde sie jetzt deinstallieren und neu installieren.

1.2 Schließen Sie den MySQL-Dienst

Sehen Sie sich den Ausführungsstatus des MySQL-Dienstes an:

service mysql status

Die Ausgabe ist

SUCCESS! MySQL running (1084471)

Oder
Dienst MySQLzeigt an, dass der MySQL-Dienst ausgeführt wird. Beenden Sie zuerst den Dienst.

Oder sehen Sie sich den Prozess des MySQL-Dienstes an

 ps -ef|grep mysql

Ausgabe:
Fügen Sie hier eine Bildbeschreibung ein
Offensichtlich ist der MySQL-Dienst aktiviert.

Schließen Sie den MySQL-Dienst:

service mysql stop

Ausgang:

Shutting down MySQL.. SUCCESS!

Zeigt an, dass der MySQL-Dienst erfolgreich heruntergefahren wurde.

1.3 Zeigen Sie den Ordner an, der MySQL entspricht

find / -name mysql

Ausgang:

/home/wangdong/.local/lib/python3.8/site-packages/sqlalchemy/dialects/mysql
/etc/logrotate.d/mysql
/etc/pcp/pmlogconf/mysql
/etc/pcp/dstat/mysql
/var/lib/pcp/config/pmlogconf/mysql
/var/lib/selinux/targeted/active/modules/100/mysql
/var/lib/selinux/targeted/tmp/modules/100/mysql
/var/lib/mysql
/var/lib/mysql/mysql
/usr/bin/mysql
/usr/lib64/perl5/vendor_perl/auto/DBD/mysql
/usr/lib64/perl5/vendor_perl/DBD/mysql
/usr/lib64/mysql
/usr/share/pcp/htop/meters/mysql
/usr/share/bash-completion/completions/mysql
/usr/share/grafana/public/app/plugins/datasource/mysql
/usr/share/grafana/public/lib/monaco/min/vs/basic-languages/mysql
/usr/local/mysql

Löschen Sie diese MySQL-Verzeichnisse, achten Sie jedoch darauf, das Datenbankpaket in der Python-Umgebung nicht zu löschen. Lange Snacks. zuerst oben.

1.4 Deinstallieren und löschen Sie den von MySQL installierten Gruppenschlüsseldienst

rpm -ev mysql-community-common-8.3.30-1.el9.x86_64
rpm -ev mysql-community-release-8.3.30.noarch
rpm -ev mysql-community-client-8.3.30-1.el9.x86_64
rpm -ev mysql-community-server-8.3.30-1.el9.x86_64
rpm -ev mysql-community-libs-8.3.30-1.el9.x86_64

Bei der Deinstallation des Dienstes bin ich auf das Problem gestoßen, dass die drei Komponentendienste nicht deinstalliert werden konnten, und es wurde angezeigt, dass die Abhängigkeit postfix-2:2.10.1-7.el9.x86_64 fehlte:

error: Failed dependencies:
libmysqlclient.so.18()(64bit) is needed by (installed) postfix-2:2.10.1-7.el9.x86_64
libmysqlclient.so.18(libmysqlclient_18)(64bit) is needed by (installed) postfix-2:2.10.1-7.el9.x86_64

Die Lösung besteht darin, --nodeps zu rpm -ev hinzuzufügen:
--nodeps bedeutet, dass Abhängigkeiten während der Installation nicht überprüft werden,
wie zum Beispiel:

rpm -ev --nodeps mysql-community-client-8.0.30-1.el9.x86_64

1.5 Löschen Sie alle MySQL-Ordner im System

rm -rf /etc/selinux/targeted/active/modules/100/mysql
rm -rf /var/lib/mysql
rm -rf /var/lib/mysql/mysql
rm -rf /usr/share/mysql
...

1.6 Überprüfen Sie abschließend, ob MySQL gelöscht wurde

rpm -qa | grep -i mysql

Wenn es leer ist, herzlichen Glückwunsch, Sie haben erfolgreich gelöscht.

2. MySQL-Installation und -Konfiguration

2.1 Laden Sie das MySQL8.0-Installationspaket herunter

cd nach /usr/local/, erstellen Sie das MySQL-Verzeichnis und laden Sie das MySQL8.0-Installationspaket herunter

cd /usr/local/

Sie finden Ihre Lieblingsversion auf der offiziellen Website: https://dev.mysql.com/downloads/mysql/.
Die in diesem Artikel gezeigte relevante Version ist:
Linux: CentOS9
mysql: mysql-8.0.20

wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz

Download erfolgreich
MySQL

2.2 Entpacken Sie das MySQL8.0-Installationspaket

tar xvJf mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz 

MySQL

2.3 Benennen Sie das Verzeichnis in MySQL um

Benennen Sie das Verzeichnis in MySQL um

mv mysql-8.0.20-linux-glibc2.12-x86_64 mysql

Erstellen Sie eine Datenverzeichnis-Speicherdatei im Verzeichnis /use/local/mysql

mkdir data

2.4 Erstellen Sie MySQL-Benutzergruppen bzw. Benutzer

Erstellen Sie jeweils Benutzergruppen, Benutzer und Passwörter (falls die Eingabeaufforderung vorhanden ist, wurde sie zuvor erstellt).

groupadd mysql
useradd -g mysql mysql

2.5 Warum muss ich bei der Installation von MySQL unter Linux entsprechende Benutzer und Benutzergruppen erstellen?

Wenn MySQL mit einem separaten Konto und einer separaten Benutzergruppe ausgeführt wird, können die Benutzer- und Benutzergruppenberechtigungen gesteuert werden. Wenn die Berechtigungen der Dateien im System nicht auf MySQL-Benutzer und -Benutzergruppen festgelegt sind, können MySQL-Benutzer keine Lese-, Schreib- und Ausführungsvorgänge ausführen. Und wenn MySQL gehackt wird, kann es passieren, dass die zu Beginn erhaltene Berechtigung das erstellte Konto und nicht das Standard-Root ist. Wir erstellen beim Kompilieren und Installieren eine MySQL-Gruppe und einen MySQL-Benutzer und ändern das Datenverzeichnis und den Besitzer des Installationsverzeichnisses in for MySQL.
Wenn MySQL startet, gibt es einen einzelnen Prozess mysqld, und der Eigentümer des Prozesses ist mysql, was die Unabhängigkeit des MySQL-Dienstes gewährleistet. Selbst wenn der MySQL-Dienst gehackt wird und die MySQL-Benutzerberechtigung erhalten wird, bleibt die Sicherheit des gesamten Systems erhalten wird nicht betroffen sein.

2.6 Autorisieren Sie den neu erstellten Benutzer

chown -R mysql.mysql /usr/local/mysql/mysql-8.0
chmod 750 /usr/local/mysql/mysql-8.0/data -R

2.7 Umgebungsvariablen konfigurieren

Konfigurieren Sie die Umgebung, bearbeiten Sie die Datei /etc/profile, dh fügen Sie der Datei eine Zeile hinzuexport PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib

vim /etc/profile
#--------------------------
#点击键盘上的i键,进入输入模式,在配置文件最后增加一行:
#--------------------------
export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib
#添加完成后,按Esc键退出输入模式,进入命令模式,输入:wq,保存并退出
#然后在输入cat /etc/profile  查看是否保存成功,效果如下:↓↓↓↓↓↓

Hinweis : Nach der Konfiguration der Umgebungsvariablen müssen Sie den Befehl source /etc/profile ausführen, damit die Konfigurationsdatei wirksam wird.

2.8 Bearbeiten (erstellen) Sie die Datei my.cnf

vi /etc/my.cnf
[mysql]
default-character-set=utf8mb4
[client]
#port=3306
socket=/var/lib/mysql/mysql.sock

[mysqld]
#port=3306
#server-id=3306
user=mysql
general_log = 1
general_log_file= /var/log/mysql/mysql.log
socket=/var/lib/mysql/mysql.sock
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
log-bin=/usr/local/mysql/data/mysql-bin
innodb_data_home_dir=/usr/local/mysql/data
innodb_log_group_home_dir=/usr/local/mysql/data/
character-set-server=utf8mb4
lower_case_table_names=1
autocommit=1
default_authentication_plugin=mysql_native_password
symbolic-links=0
# Disabling symbolic-links is recommended to prevent assorted security risks
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

[mysqld_safe]
log-error=/usr/local/mysql/data/mysql.log
pid-file=/usr/local/mysql/data/mysql.pid

#
# include all files from the config directory

Notiz:

  • MySQL hat diese utf8mb4-Codierung nach 5.5.3 hinzugefügt. MB4 bedeutet, dass die meisten Bytes 4 sind, und wird speziell für die Kompatibilität mit 4-Byte-Unicode verwendet. utf8mb4 ist eine Obermenge von utf8. Es ist keine Konvertierung erforderlich, außer die Kodierung in utf8mb4 zu ändern. Um Platz zu sparen, reicht es natürlich normalerweise aus, utf8 zu verwenden.

2.9 Initialisieren Sie die Basisinformationen und erhalten Sie das anfängliche Passwort

cd in das Verzeichnis /usr/local/mysql/bin, initialisieren Sie die Basisinformationen und rufen Sie das Anfangskennwort der Datenbank ab (ausgeführt im Verzeichnis /usr/local/mysql/bin).

cd bin
./mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/ --initialize
#初始化完成后,复制最后的初始密码,保存下来后面需要
#WgzUagc*e6V5

Achten Sie auf mögliche Fehler:
(1) mysqld: Datei „/var/log/mysql/mysql.log“ nicht gefunden (OS-Fehlernummer 2 – Keine solche Datei oder kein solches Verzeichnis)

Das Verzeichnis existiert nicht. Die Installation fordert zur Erstellung eines Verzeichnisses auf

MySQL

(2) Das angegebene Datenverzeichnis /usr/local/mysql/data/ ist unbrauchbar. Sie können alle Dateien entfernen, die der Server hinzugefügt hat. Obwohl die erste Initialisierung fehlgeschlagen ist, befinden sie sich bereits in
diesem Verzeichnis /usr/local Die generierten Daten unter /mysql/data/ muss gelöscht werden, bevor der Initialisierungsbefehl ausgeführt wird.
MySQL
Der Screenshot des erfolgreichen Vorgangs sieht wie folgt aus:
MySQL

Beachten Sie, dass Sie hier das anfängliche Passwort speichern , das später für die Anmeldung verwendet wird mysql -uroot -p.

2.10 Kopieren Sie die Datei mysql.server und führen Sie sie im Verzeichnis /usr/local/mysql aus

cp -a ./support-files/mysql.server /etc/init.d/mysql 
cp -a ./support-files/mysql.server /etc/init.d/mysqld

2.11 Autorisierung

chown 777 /etc/my.cnf
chmod +x /etc/init.d/mysql
chmod +x /etc/init.d/mysqld

2.12 Erstellen Sie /var/lib/mysql

Überprüfen Sie, ob das Verzeichnis /var/lib/mysql existiert, andernfalls erstellen Sie es

mkdir /var/lib/mysql
chown -R mysql:mysql /var/lib/mysql/ 

2.13 Starten Sie die Datenbank

Starten Sie die Datenbank und das Wort ERFOLGREICH zeigt an, dass die MySQL-Installation abgeschlossen ist

service mysql start 
#出现SUCCESS 说明启动成功,效果图如下:

MySQL
ps:
Wenn Sie feststellen, dass der Start fehlschlägt, können Sie zunächst das mysql.log in den Daten überprüfen. Wenn eine Eingabeaufforderung wie 3306 angezeigt wird, sollte Ihnen als Erstes in den Sinn kommen, dass der Port belegt ist. Verwenden Sie lsof -i: Geben Sie die Portnummer ein, um zu überprüfen, welche PID (Prozessnummer) den Port belegt, und verwenden Sie dann die Kill-PID (Prozessnummer), um den Prozess abzubrechen und erneut auszuführenservice mysql start

2.14 Bereiten Sie sich auf die Anmeldung vor

mysql -u root -p

(1) Fehler: MySQL: Fehler beim Laden gemeinsam genutzter Bibliotheken: libtinfo.so.5: Gemeinsam genutzte Objektdatei kann nicht geöffnet werden: Keine solche Datei oder kein solches Verzeichnis

mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
  • Lösung 1:
yum install libtinfo* -y

Fügen Sie hier eine Bildbeschreibung ein

  • Lösung 2:
cp /lib64/libncurses.so.6 /lib64/libncurses.so.5
或者 添加软连接
ln -s /lib64/libncurses.so.6 /lib64/libncurses.so.5

Fügen Sie hier eine Bildbeschreibung ein
(2) Fehler: ERROR 2002 (HY000): Es kann keine Verbindung zum lokalen MySQL-Server über den Socket „/var/lib/mysql/mysql.sock“ hergestellt werden,
um die Datei mysql.sock zu finden. Der Befehl lautet wie folgt:

find -name mysql.sock
  • Wenn die Datei nicht vorhanden ist, können Sie auf diesen Artikel https://blog.csdn.net/haifu_xu/article/details/25281599 verweisen

  • Die Datei existiert, aber sie existiert nicht im Verzeichnis /var/lib/mysql. Stellen Sie einfach eine weiche Verbindung her. Stellen Sie vorher sicher, dass der aktuelle Benutzer der Root-Benutzer ist und der Befehl whoami lautet. Beispielsweise befindet sich mysql.sock im Verzeichnis /tmp und ist per Softlink mit dem Verzeichnis /var/lib/mysql/ verknüpft.

ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock

Starten Sie MySQL anschließend neu

service mysqld start

2.15 Erfolgreiche Anmeldung und Passwort zurücksetzen

Wenn Sie nach der Anmeldung einen Befehl eingeben, um einen Fehler zu melden, müssen Sie Ihr Passwort mithilfe der ALTER USER-Anweisung zurücksetzen, bevor Sie diese Anweisung ausführen. Zu diesem Zeitpunkt müssen Sie das ursprüngliche Passwort zurücksetzen

set password='your password'

MySQL-Passwort zurücksetzen
Wenn das Passwort die MySQL-Anforderungen erfüllt, wird es erfolgreich geändert. Wenn die folgende Fehlermeldung erscheint:

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

Falls das Passwort geändert werden muss, um den Vorgang auszuführen, kann das Passwort zunächst in ein komplexes Passwort geändert werden, das die Anforderungen erfüllt. Führen Sie dann die folgenden beiden Anweisungen aus und setzen Sie das Passwort auf „einfach“.

set global validate_password.policy=0;
# 有的是 set global validate_password.policy=LOW;
set global validate_password.length=6;
flush privileges;

2.16 Remote-Verbindung

Bei der Remote-Verbindung mit Tools (z. B. Navicat) wird ein Fehler gemeldet, da keine Benutzerberechtigung für die Remote-Verbindung oder keine offene Portnummer vorhanden ist.

  • Benutzerberechtigungen
    Lösung 1: Ändern Sie das Element „Host“ der Datenbank „Benutzer“ von „localhost“ in „%“.
use mysql;
select host from user where user='root'; 
update user set host = '%' where user ='root';
flush privileges;

Der Screenshot der Operation sieht wie folgt aus:
MySQL

select user,host from mysql.user;

Lösung 2: Direkte Autorisierung

GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY ‘youpassword' WITH GRANT OPTION;

  • Offene Portnummer
    Wenn es sich um einen physischen Server handelt:
    Überprüfen Sie, ob Port 3306 offen ist
firewall-cmd --query-port=3306/tcp

Fügen Sie Port 3306 hinzu, wenn er nicht geöffnet ist

firewall-cmd --zone=public --add-port=3306/tcp --permanent

Aktualisieren Sie die Firewall, nachdem Sie den Port hinzugefügt haben

firewall-cmd --reload

MySQL

Wenn es sich um einen Cloud-Server handelt:
MySQL

3. MySQL-Betrieb

Nach Abschluss der Installation haben wir das Passwort des Root-Benutzers geändert. Als Nächstes konfigurieren wir die relevanten Benutzer.

3.1 Benutzer erstellen

CREATE USER 'usernamexxx'@'hostxxx' IDENTIFIED BY 'passwordxxx';

veranschaulichen:

  • hostxxx: Geben Sie den Host an, auf dem sich der Benutzer anmelden kann. Wenn es sich um einen lokalen Benutzer handelt, kann localhost verwendet werden. Wenn Sie möchten, dass sich der Benutzer von einem beliebigen Remote-Host aus anmeldet, können Sie den Platzhalter % verwenden
  • Passwortxxx: Das Anmeldekennwort des Benutzers. Das Kennwort kann leer sein. Wenn es leer ist, kann sich der Benutzer ohne Kennwort beim Server anmelden

Beispiel:

CREATE USER 'jack'@'localhost' IDENTIFIED BY '123456';
CREATE USER 'rose'@'192.168.38.110_' IDENDIFIED BY '123456';
CREATE USER 'rose'@'%' IDENTIFIED BY '123456';
CREATE USER 'rose'@'%' IDENTIFIED BY '';
CREATE USER 'rose'@'%';

Notiz:

Nachdem ein Benutzer erstellt wurde, kann der Benutzer nur eine Verbindung zum Datenbankserver herstellen, verfügt jedoch nicht über die Berechtigung zum Betrieb des Datenbankservers.

3.2 Autorisierung

GRANT privilegesxxx ON databasenamexxx.tablenamexxx TO 'usernamexxx'@'hostxxx'

veranschaulichen:

  • Privilegienxxx: Die Betriebsberechtigung des Benutzers, z. B. SELECT, INSERT, UPDATE usw. Wenn Sie alle Berechtigungen erteilen möchten, verwenden Sie ALL
  • Datenbanknamexxx: Datenbankname
  • Tabellennamexxx: Tabellenname. Wenn Sie dem Benutzer die entsprechende Betriebsberechtigung für alle Datenbanken und Tabellen erteilen möchten, kann dies ausgedrückt werden, z. B. .*

Beispiel:

GRANT SELECT, INSERT ON DbXXX.user TO 'jack'@'%';
GRANT ALL ON *.* TO 'jack'@'%';
GRANT ALL ON DbXXX.* TO 'jack'@'%';

Notiz:

  1. Nach der Autorisierung muss der Benutzer erneut eine Verbindung zu MySQL herstellen, um die entsprechenden Berechtigungen zu erhalten.
  2. Der durch den obigen Befehl autorisierte Benutzer kann keine anderen Benutzer autorisieren. Wenn Sie möchten, dass der Benutzer autorisiert wird, verwenden Sie den folgenden Befehl:
GRANT privilegesxxx ON databasenamexxx.tablenamexxx TO 'usernamexxx'@'hostxxx' WITH GRANT OPTION;

3.3 Benutzerpasswort festlegen und ändern

Benutzerpasswort festlegen und ändern

SET PASSWORD FOR 'usernamexxx'@'hostxxx' = PASSWORD('newpasswordxxx');

Für den aktuell angemeldeten Benutzer verwenden Sie:SET PASSWORD = PASSWORD("newpasswordxxx");

Beispiel:

SET PASSWORD FOR 'jack'@'%' = PASSWORD("123456");

3.4 Benutzerrechte entziehen

REVOKE privilegexxx ON databasenamexxx.tablenamexxx FROM 'usernamexxx'@'hostxxx';

Beispiel:

REVOKE SELECT ON *.* FROM 'jack'@'%';

Hinweis:
Wenn Sie den Benutzer 'jack'@'%' wie folgt (oder ähnlich) autorisieren: , können Sie die SELECT-Operation des Benutzers für die Benutzertabelle in der Testdatenbank nicht GRANT SELECT ON test.user TO 'jack'@'%'mit dem Befehl rückgängig machen. REVOKE SELECT ON *.* FROM 'jack'@'%';Im Gegensatz dazu kann der Befehl bei Verwendung der Autorisierung GRANT SELECT ON *.* TO 'jack'@'%';die REVOKE SELECT ON test.user FROM 'jack'@'%';Auswahlberechtigung des Benutzers für die Benutzertabelle in der Testdatenbank nicht widerrufen.

Die spezifischen Informationen können mit dem Befehl angezeigt werden SHOW GRANTS FOR 'jack'@'%';.

3.5 Benutzer löschen

DROP USER 'usernamexxx'@'hostxxx';

3.6 Zusammenfassung allgemeiner MySQL-Befehle

1.创建用户
	格式:CREATE USER 'username'@'host' IDENTIFIED BY 'password';
	例如:CREATE USER 'chun'@'%' IDENTIFIED BY 'chun';
	
	PS:username - 你将创建的用户名,
	host - 指定该用户在哪个主机上可以登陆,此处的"localhost",是指该用户只能在本地登录,不能在另外一台机器上远程登录,如果想远程登录的话,将"localhost"改为"%",表示在任何一台电脑上都可以登录;也可以指定某台机器可以远程登录;
	password - 该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器。

2.给用户授权
  1. 查询访问权限
  	select user,host from mysql.user;
  2. 给用户授权
	命令:GRANT privileges ON databasename.tablename TO 'username'@'host'
	例如:GRANT privileges ON *.* TO 'chun'@'%';
	PS: privileges - 用户的操作权限,如SELECT , INSERT , UPDATE 等(详细列表见该文最后面).如果要授予所的权限则使用ALL.;databasename - 数据库名,tablename-表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示, 如*.*.*

3.设置与更改用户密码
	命令:SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');
	例子: SET PASSWORD FOR 'chun'@'%' = PASSWORD("chun");

4.撤销用户权限
    命令: REVOKE privilege ON databasename.tablename FROM 'username'@'host';
	说明: privilege, databasename, tablename - 同授权部分.
	例子: REVOKE SELECT ON mq.* FROM 'chun'@'localhost';

	PS: 假如你在给用户'dog'@'localhost''授权的时候是这样的(或类似的):GRANT SELECT ON test.user TO 'dog'@'localhost', 则在使用REVOKE SELECT ON *.* FROM 'dog'@'localhost';命令并不能撤销该用户对test数据库中user表的SELECT 操作.相反,如果授权使用的是GRANT SELECT ON *.* TO 'dog'@'localhost';则REVOKE SELECT ON test.user FROM 'dog'@'localhost';命令也不能撤销该用户对test数据库中user表的Select 权限.

    具体信息可以用命令SHOW GRANTS FOR 'dog'@'localhost'; 查看.
 
5.删除用户
    命令: DROP USER 'username'@'host';
      
6.查看用户的授权
	mysql> show grants for dog@localhost;
	PS:GRANT USAGE:mysql usage权限就是空权限,默认create user的权限,只能连库,啥也不能干
7.数据库的创建和销毁
	创建:create database 数据库名;
	例如:create database mytest;
	mysql> show databases;
	+--------------------+
	| Database           |
	+--------------------+
	| information_schema |
	| CARDGAME           |
	| mysql              |
	| mytest             |
	| performance_schema |
	| test               |
	+--------------------+
	销毁:drop database 数据库名;
	例如:drop database mytest;
	mysql> flush privileges;
	把新的数据库授权给新用户
	#将test库的所有权限赋予mysql用户
	grant all privileges on test.* to "mysql"@"%";
	grant all privileges on test.* to "tcl"@"%";
8.创建数据库表和删除表
	创建表:
		use 数据库名;
		create table tb_dept( Id int primary key auto_increment, Name varchar(18),description varchar(100));	
		mysql> show tables;
		+-------------------+
		| Tables_in_mystest |
		+-------------------+
		| tb_dept           |
		+-------------------+
		1 row in set (0.00 sec)
	删除表:drop table 表名;
			例如:drop table tb_dept;
9.给表添加索引:
	1.添加PRIMARY KEY(主键索引) 
		mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 
	2.添加UNIQUE(唯一索引) 
		mysql>ALTER TABLE `table_name` ADD UNIQUE (`column`) 
	3.添加INDEX(普通索引) 
		mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column` ) 
	4.添加FULLTEXT(全文索引) 
		mysql>ALTER TABLE `table_name` ADD FULLTEXT ( `column`) 
	5.添加多列索引 
		mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )

10. mysql编码
	1. 查看mysql编码
	show variables like '%character%';
	2. 为什么输入中文会报错,输入英文就成功了?
	原因:因为数据表中的内容为latin1字符集,latin1字符集为8bit,这说明它是不能表示中文的,因此会有报错。
	修改库字符集:
	alter database joyrun character set utf8;
	修改表字符集:
	alter table tbl_run character set utf8;
	修改字段字符集:
	alter table tbl_run change name name varchar(20) character set utf8;

4. Analysieren Sie, ob das Prozentzeichen % im MySQL-Benutzer localhost enthält?

Beim Betrieb von MySQL stellte ich fest, dass manchmal nur %-Konten erstellt wurden und ich über localhost eine Verbindung herstellen konnte, manchmal jedoch nicht. Ich konnte bei der Online-Suche keine zufriedenstellende Antwort finden, also habe ich es einfach manuell getestet.

4.1 Zwei Verbindungsmethoden

[mysql@mysql-test-83 ~]$ /usr/local/mysql57/bin/mysql -utest_user -p -hlocalhost
Enter password: 
mysql> status
/usr/local/mysql57/bin/mysql  Ver 14.14 Distrib 5.7.21, for linux-glibc2.12 (x86_64) using  EditLine wrapper

Connection id:        9
Current database:    
Current user:        test_user@localhost
SSL:            Not in use
Current pager:        stdout
Using outfile:        ''
Using delimiter:    ;
Server version:        5.7.21-log MySQL Community Server (GPL)
Protocol version:    10
Connection:        Localhost via UNIX socket

Unter Aktueller Benutzer können Sie sehen, dass der Benutzer xx@localhost ist und die Verbindungsmethode Localhost über UNIX-Socket ist. Der Parameter -h
ist IP
. Wenn der Parameter -h IP ist, wird tatsächlich eine TCP-Verbindung verwendet. Das Beispiel sieht wie folgt aus

[mysql@mysql-test-83 ~]$ /usr/local/mysql57/bin/mysql -utest_user -p -h127.0.0.1
Enter password: 
mysql> status
--------------
/usr/local/mysql57/bin/mysql  Ver 14.14 Distrib 5.7.21, for linux-glibc2.12 (x86_64) using  EditLine wrapper

Connection id:        11
Current database:    
Current user:        [email protected]
SSL:            Cipher in use is DHE-RSA-AES256-SHA
Current pager:        stdout
Using outfile:        ''
Using delimiter:    ;
Server version:        5.7.21-log MySQL Community Server (GPL)
Protocol version:    10
Connection:        127.0.0.1 via TCP/IP
Server characterset:    utf8

Unter Aktueller Benutzer können Sie sehen, dass der Benutzer [email protected] ist und die Verbindungsmethode TCP/IP ist

4.2 Unterschiede zwischen verschiedenen Versionen

Die Testmethode besteht darin, zu prüfen, ob eine Verbindung hergestellt werden kann. Wenn Sie den Testvorgang nicht beobachten möchten, können Sie ihn bis zum Ende ziehen, um die Schlussfolgerung zu sehen

  1. MySQL 8.0
  • Benutzer erstellen
mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.11    |
+-----------+
1 row in set (0.00 sec)

mysql> create user test_user@'%' identified by 'test_user';
Query OK, 0 rows affected (0.07 sec)
  • Melden Sie sich mit localhost an
[root@mysql-test-72 ~]# /usr/local/mysql80/bin/mysql -utest_user -p -hlocalhost
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.11 MySQL Community Server - GPL
========= 省略 ===========

mysql> status
--------------
/usr/local/mysql80/bin/mysql  Ver 8.0.11 for linux-glibc2.12 on x86_64 (MySQL Community Server - GPL)

Connection id:        9
Current database:    
Current user:        test_user@localhost
SSL:            Not in use
Current pager:        stdout
Using outfile:        ''
Using delimiter:    ;
Server version:        8.0.11 MySQL Community Server - GPL
Protocol version:    10
Connection:        Localhost via UNIX socket
...
  • Melden Sie sich mit IP an
[root@mysql-test-72 ~]# /usr/local/mysql80/bin/mysql -utest_user -p -h127.0.0.1
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.11 MySQL Community Server - GPL
========= 省略 ===========

mysql> status
--------------
/usr/local/mysql80/bin/mysql  Ver 8.0.11 for linux-glibc2.12 on x86_64 (MySQL Community Server - GPL)

Connection id:        8
Current database:    
Current user:        [email protected]
SSL:            Cipher in use is DHE-RSA-AES128-GCM-SHA256
Current pager:        stdout
Using outfile:        ''
Using delimiter:    ;
Server version:        8.0.11 MySQL Community Server - GPL
Protocol version:    10
Connection:        127.0.0.1 via TCP/IP

Das Ergebnis zeigt MySQL Version 8.0, % inklusive localhost

  1. MySQL 5.7
  • Benutzer erstellen
db83-3306>>create user test_user@'%' identified by 'test_user';
Query OK, 0 rows affected (0.00 sec)
  • Melden Sie sich mit localhost an
[mysql@mysql-test-83 ~]$ /usr/local/mysql57/bin/mysql -utest_user -p -hlocalhost
Enter password: 
========= 省略 ===========

mysql> status
/usr/local/mysql57/bin/mysql  Ver 14.14 Distrib 5.7.21, for linux-glibc2.12 (x86_64) using  EditLine wrapper

Connection id:        9
Current database:    
Current user:        test_user@localhost
SSL:            Not in use
Current pager:        stdout
Using outfile:        ''
Using delimiter:    ;
Server version:        5.7.21-log MySQL Community Server (GPL)
Protocol version:    10
Connection:        Localhost via UNIX socket
....
  • Melden Sie sich mit IP an
[mysql@mysql-test-83 ~]$ /usr/local/mysql57/bin/mysql -utest_user -p -h127.0.0.1
Enter password: 
========= 省略 ===========

mysql> status
--------------
/usr/local/mysql57/bin/mysql  Ver 14.14 Distrib 5.7.21, for linux-glibc2.12 (x86_64) using  EditLine wrapper

Connection id:        11
Current database:    
Current user:        [email protected]
SSL:            Cipher in use is DHE-RSA-AES256-SHA
Current pager:        stdout
Using outfile:        ''
Using delimiter:    ;
Server version:        5.7.21-log MySQL Community Server (GPL)
Protocol version:    10
Connection:        127.0.0.1 via TCP/IP
Server characterset:    utf8
...

Das Ergebnis zeigt MySQL Version 5.7, % inklusive localhost

4.3 Fazit

Ob der % im Versionsbenutzer „localhost“ enthält

MySQL-Version % ob localhost eingeschlossen werden soll
MySQL8.0 enthalten
MySQL5.7 enthalten
MySQL5.6 beinhaltet nicht
MySQL5.1 beinhaltet nicht
MariaDB 10.3 beinhaltet nicht

Das Obige dient der Analyse, ob das Prozentzeichen % im MySQL-Benutzer localhost enthält?

5. Verwandte Artikel

Gemeinsamer Index, Indexabdeckung und Index-Pushdown erklärt

Referenz:
https://www.jb51.net/article/258197.htm
https://blog.csdn.net/haifu_xu/article/details/25281599

Supongo que te gusta

Origin blog.csdn.net/craftsman2020/article/details/128259334
Recomendado
Clasificación