MySQL: Unterschied zwischen den Versionen

Aus xinux.net
Zur Navigation springen Zur Suche springen
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt)
Zeile 1: Zeile 1:
 
=Inbetriebnahme=
 
=Inbetriebnahme=
 
==Installation==
 
==Installation==
  root@asuka:~# aptitude install mysql-server mysql-client
+
  root@asuka:~# apt install mysql-server mysql-client
 +
 
 
==Schnellübersicht==
 
==Schnellübersicht==
 
*[[mysql-schnell-übersicht]]
 
*[[mysql-schnell-übersicht]]
Zeile 113: Zeile 114:
 
  | Tables_in_world |
 
  | Tables_in_world |
 
  +-----------------+
 
  +-----------------+
  | City           |
+
  | city           |
  | Country         |
+
  | country         |
  | CountryLanguage |
+
  | countryLanguage |
 
  +-----------------+
 
  +-----------------+
 
  3 rows in set (0.00 sec)
 
  3 rows in set (0.00 sec)

Version vom 2. April 2020, 09:47 Uhr

Inbetriebnahme

Installation

root@asuka:~# apt install mysql-server mysql-client

Schnellübersicht

Login

root@asuka:~# mysql --user root -h localhost -p
Enter password: XXXXXX
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.41-3ubuntu12 (Ubuntu)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

Status überprüfen

mysql> status;

--------------
mysql  Ver 14.14 Distrib 5.1.41, for debian-linux-gnu (i486) using readline 6.1

Connection id:		48
SSL:			Not in use
Current pager:		stdout
Using outfile:		
Using delimiter:	;
Server version:		5.1.41-3ubuntu12 (Ubuntu)
Protocol version:	10
Connection:		Localhost via UNIX socket
Client characterset:	latin1
Server characterset:	latin1
UNIX socket:		/var/run/mysqld/mysqld.sock
Uptime:			41 min 4 sec

Threads: 1  Questions: 207  Slow queries: 0  Opens: 476  Flush tables: 1  Open tables: 64  Queries per second avg: 0.84
--------------

Hilfe aufrufen

mysql> help contents;
You asked for help about help category: "Contents"
For more information, type 'help <item>', where <item> is one of the following
categories:
   Account Management
   Administration
   Compound Statements
   Data Definition
   Data Manipulation
   Data Types
   Functions
   Functions and Modifiers for Use with GROUP BY
   Geographic Features
   Language Structure
   Plugins
   Table Maintenance
   Transactions
   User-Defined Functions
   Utility

Suchen und anzeigen

Datenbanken anzeigen

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
+--------------------+
2 rows in set (0.00 sec)

Datenbank auswählen

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A 
 
Database changed

Datenbank erstellen

mysql> create database world;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| world              |
+--------------------+
3 rows in set (0.00 sec)

Download von Beispieldaten

root@asuka:~# wget http://downloads.mysql.com/docs/world.sql.gz
oder bei problemen hier
Media:World.sql.gz 
root@asuka:~# gunzip world.sql.gz

Datenbank mit Daten von Backup füllen

root@asuka:~# mysql world < world.sql  -p
Enter password:

Datenbank wechseln

mysql> use world
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

Tabellen einer Datenbank anzeigen

mysql> show tables;
+-----------------+
| Tables_in_world |
+-----------------+
| city            |
| country         |
| countryLanguage |
+-----------------+
3 rows in set (0.00 sec)

Tabellenbeschreibung anzeigen

mysql> describe City;
+-------------+----------+------+-----+---------+----------------+
| Field       | Type     | Null | Key | Default | Extra          |
+-------------+----------+------+-----+---------+----------------+
| ID          | int(11)  | NO   | PRI | NULL    | auto_increment |
| Name        | char(35) | NO   |     |         |                |
| CountryCode | char(3)  | NO   |     |         |                |
| District    | char(20) | NO   |     |         |                |
| Population  | int(11)  | NO   |     | 0       |                |
+-------------+----------+------+-----+---------+----------------+
5 rows in set (0.00 sec)

Einträge anzeigen

mysql> select * from City;
+----+------------------+-------------+---------------+------------+
| ID | Name             | CountryCode | District      | Population |
+----+------------------+-------------+---------------+------------+
|  1 | Kabul            | AFG         | Kabol         |    1780000 |
|  2 | Qandahar         | AFG         | Qandahar      |     237500 |
|  3 | Herat            | AFG         | Herat         |     186800 |
|  4 | Mazar-e-Sharif   | AFG         | Balkh         |     127800 |
|  5 | Amsterdam        | NLD         | Noord-Holland |     731200 |
(...)

Nur die ersten 10 Einträge anzeigen

mysql> select * from City limit 10;
+----+----------------+-------------+---------------+------------+
| ID | Name           | CountryCode | District      | Population |
+----+----------------+-------------+---------------+------------+
|  1 | Kabul          | AFG         | Kabol         |    1780000 |
|  2 | Qandahar       | AFG         | Qandahar      |     237500 |
|  3 | Herat          | AFG         | Herat         |     186800 |
|  4 | Mazar-e-Sharif | AFG         | Balkh         |     127800 |
|  5 | Amsterdam      | NLD         | Noord-Holland |     731200 |
|  6 | Rotterdam      | NLD         | Zuid-Holland  |     593321 |
|  7 | Haag           | NLD         | Zuid-Holland  |     440900 |
|  8 | Utrecht        | NLD         | Utrecht       |     234323 |
|  9 | Eindhoven      | NLD         | Noord-Brabant |     201843 |
| 10 | Tilburg        | NLD         | Noord-Brabant |     193238 |
+----+----------------+-------------+---------------+------------+
10 rows in set (0.00 sec)

Anzeigen von Einträgen mit einer Bedingung

mysql> select * from City where Population > 5000000;
+------+-------------------+-------------+-------------------+------------+
| ID   | Name              | CountryCode | District          | Population |
+------+-------------------+-------------+-------------------+------------+
|  206 | S�o Paulo         | BRA         | S�o Paulo         |    9968485 |
|  207 | Rio de Janeiro    | BRA         | Rio de Janeiro    |    5598953 |
|  456 | London            | GBR         | England           |    7285000 |
|  608 | Cairo             | EGY         | Kairo             |    6789479 |
|  939 | Jakarta           | IDN         | Jakarta Raya      |    9604900 |
(...)

Umstellen der Zeichenkodierung

mysql> SET NAMES 'utf8';
Query OK, 0 rows affected (0.00 sec)

Weil:

mysql> select * from City where Population > 5000000;
+------+---------------------+-------------+---------------------+------------+
| ID   | Name                | CountryCode | District            | Population |
+------+---------------------+-------------+---------------------+------------+
|  206 | São Paulo          | BRA         | São Paulo          |    9968485 |
|  207 | Rio de Janeiro      | BRA         | Rio de Janeiro      |    5598953 |
(...)

Bestimmte Spalten anzeigen aufgrund einer Bedingung

mysql> select Name,Population from City where Population > 7000000;
+-------------------+------------+
| Name              | Population |
+-------------------+------------+
| São Paulo        |    9968485 |
| London            |    7285000 |
| Jakarta           |    9604900 |
| Mumbai (Bombay)   |   10500000 |
| Delhi             |    7206704 |
| Tokyo             |    7980230 |
| Shanghai          |    9696300 |
| Peking            |    7472000 |
| Seoul             |    9981619 |
| Ciudad de México |    8591309 |
| Karachi           |    9269265 |
| Istanbul          |    8787958 |
| Moscow            |    8389200 |
| New York          |    8008278 |
+-------------------+------------+
14 rows in set (0.00 sec)

Bestimmte Spalten anzeigen aufgrund mehrerer Bedingungen

mysql> select Name from Country where Continent='Europe' AND Population > 30000000;
+--------------------+
| Name               |
+--------------------+
| United Kingdom     |
| Spain              |
| Italy              |
| Poland             |
| France             |
| Germany            |
| Ukraine            |
| Russian Federation |
+--------------------+
8 rows in set (0.00 sec)

Ergebnis anzeigen mit Sortierung

mysql> select Name,Population from Country where Continent='Europe' AND Population > 30000000 Order by Population;
+--------------------+------------+
| Name               | Population |
+--------------------+------------+
| Poland             |   38653600 |
| Spain              |   39441700 |
| Ukraine            |   50456000 |
(...)


Ergebnis anzeigen mit absteigender Sortierung

mysql> select Name,Population from Country where Continent='Europe' AND Population > 30000000 Order by Population desc;
+--------------------+------------+
| Name               | Population |
+--------------------+------------+
| Russian Federation |  146934000 |
| Germany            |   82164700 |
| United Kingdom     |   59623400 |
| France             |   59225700 |
| Italy              |   57680000 |
| Ukraine            |   50456000 |
| Spain              |   39441700 |
| Poland             |   38653600 |
+--------------------+------------+
8 rows in set (0.00 sec)

Erstellen von Datenbanken

Datenbank erstellen und auswählen

mysql> create database telefonbuch;
Query OK, 1 row affected (0.00 sec)
mysql> use telefonbuch;
Database changed

Tabelle erstellen

mysql> create table rufnummern (
    -> id INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> vorname VARCHAR(128),
    -> nachname VARCHAR(128),
    -> vorwahl VARCHAR(32),
    -> rufnummer VARCHAR(32)
    -> );
Query OK, 0 rows affected (0.03 sec)

Datensätze in die Tabelle eintragen

mysql> insert into
    -> rufnummern (id,vorname,nachname,vorwahl,rufnummer)
    -> values
    -> (1,
    -> 'Karl'
    -> ,
    -> 'Heinz',
    -> '001',
    -> '123456'
    -> );
Query OK, 1 row affected (0.00 sec)

Datensatz anzeigen

mysql> select * from rufnummern;
+----+---------+----------+---------+-----------+
| id | vorname | nachname | vorwahl | rufnummer |
+----+---------+----------+---------+-----------+
|  1 | Karl    | Heinz    | 001     | 123456    |
+----+---------+----------+---------+-----------+
1 row in set (0.00 sec)

Weitere Datensätze eintragen

mysql> insert into rufnummern (vorname,nachname,vorwahl,rufnummer) values ('xinux' , 'tux', '002', '654321' );
Query OK, 1 row affected (0.00 sec)

Die id wird durch Auto increment eigenständig erhöht.

Erweiterter Datensatz anzeigen

mysql> select * from rufnummern;
+----+---------+----------+---------+-----------+
| id | vorname | nachname | vorwahl | rufnummer |
+----+---------+----------+---------+-----------+
|  1 | Karl    | Heinz    | 001     | 123456    |
|  2 | xinux   | tux      | 002     | 654321    |
+----+---------+----------+---------+-----------+
2 rows in set (0.00 sec)

Aktualisierung von Datensätzen

mysql> update rufnummern set rufnummer = '777444' where vorname = 'Karl';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

Aktualisierter Datensatz anzeigen

mysql> select * from rufnummern;
+----+---------+----------+---------+-----------+
| id | vorname | nachname | vorwahl | rufnummer |
+----+---------+----------+---------+-----------+
|  1 | Karl    | Heinz    | 001     | 777444    |
|  2 | xinux   | tux      | 002     | 654321    |
+----+---------+----------+---------+-----------+
2 rows in set (0.00 sec)

Dump erzeugen

mysqldump datenbankname -p > datenbankname.dmp

Benutzer

Benutzer anzeigen

select * from mysql.user;

Benutzer anlegen

mysql -p

CREATE USER 'benutzername'@'localhost' IDENTIFIED BY 'geheim';

GRANT ALL PRIVILEGES ON datenbankname.tabellenname TO 'benutzername'@'localhost';

FLUSH PRIVILEGES;

Benutzer löschen

mysql -p

DROP USER benutzername;

Passwort einer Benutzers ändern

mysql -p

UPDATE user SET password=PASSWORD('geheim') where User='benutzername';

FLUSH PRIVILEGES;

MySQL Root Passwort neu setzen

Alternativ können Sie das neue Passwort auf jeder Plattform auch mit dem Client mysql einstellen (aber diese Methode ist nicht so sicher):

1. Halten Sie mysqld an und starten Sie ihn erneut mit den Optionen --skip-grant-tables --user=root (Windows-Nutzer lassen --user=root weg).

root@asuka:~# /etc/init.d/mysql stop
root@asuka:~# mysqld --skip-grant-tables --user=root 

2. Verbinden Sie sich mit folgendem Befehl mit dem mysqld-Server:

shell> mysql -u root

3. Geben Sie im mysql-Client folgende Anweisungen:

mysql> UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';
mysql> FLUSH PRIVILEGES;

Ersetzen Sie „newpwd“ durch das root-Passwort, das Sie in Wirklichkeit benutzen möchten.

mysql> quit
Bye
root@asuka:/etc# /etc/init.d/mysql restart
* Stopping MySQL database server mysqld 
* Starting MySQL database server mysqld 

4. Das neue Passwort sollte nun funktionieren.

Datenbank löschen

mysql -p

DROP DATABASE datenbankname;

Tabelle löschen

mysql -p

DROP TABLE tabellenname;

Siehe auch