MySQL

Вопросы написания собственного программного кода (на любых языках)

Модератор: Olej

Аватара пользователя
Olej
Писатель
Сообщения: 13530
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

MySQL

Непрочитанное сообщение Olej » 25 дек 2019, 21:44

Собственно, MySQL меня не интересует от слова совсем интересует только в контексте поддержания этого форума, с его отображением черездвижок phpBB 3.2.8.
Другая сторона вопроса обеспечения целостности форума - это PHP, что обсуждается в теме PHP и WEB-хостинг.

Аватара пользователя
Olej
Писатель
Сообщения: 13530
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: MySQL

Непрочитанное сообщение Olej » 25 дек 2019, 21:53

Описание команд MySQL в достаточной мере для администрирования форума - MySQL/MariaDB: наиболее используемые команды, примеры:
Ниже предоставлен список наиболее полезных и часто используемых команд MySQL с примерами.
Попрактикуемся на установке экземпляра форума на localhost...
P.S. В какой-то момент, опасаясь что мои добровольные помощники меня полностью бросят в этой затее, я инсталлировал себе локальную копию форума как справочник, для себя любимого, в повседневной работе. Так что если по итогу хакеры-недоброжелатели и завалят ваш экземпляр форума, то у меня всё-равно останется наш экземпляр.

Для начала контроль того, что MySQL запущен:

Код: Выделить всё

olej@ACER:~$ systemctl status mysql
● mariadb.service - MariaDB 10.3.18 database server
   Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2019-12-25 17:07:52 EET; 3h 44min ago
     Docs: man:mysqld(8)
           https://mariadb.com/kb/en/library/systemd/
  Process: 944 ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld (code=exited, status=0/SUCCESS)
  Process: 973 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
  Process: 1001 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= ||   VAR=`/usr/bin/galera_recovery`; [ $? -eq 0 ]   && systemctl set-environment _WSREP_START_POSITION=$VAR || exit 1 (code=exited, status=0/SUCCES
  Process: 1206 ExecStartPost=/etc/mysql/debian-start (code=exited, status=0/SUCCESS)
  Process: 1209 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
 Main PID: 1096 (mysqld)
   Status: "Taking your SQL requests now..."
    Tasks: 31 (limit: 4915)
   Memory: 170.6M
   CGroup: /system.slice/mariadb.service
           └─1096 /usr/sbin/mysqld

дек 25 17:07:51 ACER systemd[1]: Starting MariaDB 10.3.18 database server...
дек 25 17:07:52 ACER mysqld[1096]: 2019-12-25 17:07:52 0 [Note] /usr/sbin/mysqld (mysqld 10.3.18-MariaDB-0+deb10u1) starting as process 1096 ...
дек 25 17:07:52 ACER /etc/mysql/debian-start[1208]: Upgrading MySQL tables if necessary.
дек 25 17:07:52 ACER systemd[1]: Started MariaDB 10.3.18 database server.
дек 25 17:07:52 ACER /etc/mysql/debian-start[1212]: /usr/bin/mysql_upgrade: the '--basedir' option is always ignored
дек 25 17:07:52 ACER /etc/mysql/debian-start[1212]: Looking for 'mysql' as: /usr/bin/mysql
дек 25 17:07:52 ACER /etc/mysql/debian-start[1212]: Looking for 'mysqlcheck' as: /usr/bin/mysqlcheck
дек 25 17:07:52 ACER /etc/mysql/debian-start[1212]: This installation of MySQL is already upgraded to 10.3.18-MariaDB, use --force if you still need to run mysql_upgrade
дек 25 17:07:52 ACER /etc/mysql/debian-start[1221]: Checking for insecure root accounts.
дек 25 17:07:52 ACER /etc/mysql/debian-start[1225]: Triggering myisam-recover for all MyISAM tables and aria-recover for all Aria tables

Аватара пользователя
Olej
Писатель
Сообщения: 13530
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: MySQL

Непрочитанное сообщение Olej » 25 дек 2019, 21:59

Olej писал(а):
25 дек 2019, 21:53
Попрактикуемся на установке экземпляра форума на localhost...

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/rus.linux.net.admin/local$ cat /var/www/html/config.php
<?php
// phpBB 3.0.x auto-generated configuration file
// Do not change anything in this file!

$dbms = 'mysqli';
$dbhost = 'localhost';
$dbport = '';
$dbname = 'forum';
$dbuser = 'i1531004_solar4_linux-ru';
$dbpasswd = 'en;x@Uriie!k';
$table_prefix = 'rlf1_';
$acm_type = 'file';
$load_extensions = '';


@define('PHPBB_INSTALLED', true);
@define('DEBUG', true);
@define('DEBUG_EXTRA', true);
?>
Это справка по параметрам нашего доступа к БД.
Практикуемся:

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/rus.linux.net.admin/local$ mysql -u 'i1531004_solar4_linux-ru' --password='en;x@Uriie!k'
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 155
Server version: 10.3.18-MariaDB-0+deb10u1 Debian 10

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
Имеющиеся базы данных

Код: Выделить всё

MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| forum              |
| information_schema |
+--------------------+
2 rows in set (0.001 sec)
Выбираем для использования конкретную базу:

Код: Выделить всё

MariaDB [(none)]> USE information_schema;
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
Смотрим какие таблицы в этой БД:

Код: Выделить всё

MariaDB [information_schema]> SHOW TABLES;
+---------------------------------------+
| Tables_in_information_schema          |
+---------------------------------------+
| ALL_PLUGINS                           |
| APPLICABLE_ROLES                      |
| CHARACTER_SETS                        |
| CHECK_CONSTRAINTS                     |
| COLLATIONS                            |
| COLLATION_CHARACTER_SET_APPLICABILITY |
| COLUMNS                               |
| COLUMN_PRIVILEGES                     |
| ENABLED_ROLES                         |
| ENGINES                               |
| EVENTS                                |
| FILES                                 |
| GLOBAL_STATUS                         |
| GLOBAL_VARIABLES                      |
| KEY_CACHES                            |
| KEY_COLUMN_USAGE                      |
| PARAMETERS                            |
| PARTITIONS                            |
| PLUGINS                               |
| PROCESSLIST                           |
| PROFILING                             |
| REFERENTIAL_CONSTRAINTS               |
| ROUTINES                              |
| SCHEMATA                              |
| SCHEMA_PRIVILEGES                     |
| SESSION_STATUS                        |
| SESSION_VARIABLES                     |
| STATISTICS                            |
| SYSTEM_VARIABLES                      |
| TABLES                                |
| TABLESPACES                           |
| TABLE_CONSTRAINTS                     |
| TABLE_PRIVILEGES                      |
| TRIGGERS                              |
| USER_PRIVILEGES                       |
| VIEWS                                 |
| GEOMETRY_COLUMNS                      |
| SPATIAL_REF_SYS                       |
| CLIENT_STATISTICS                     |
| INDEX_STATISTICS                      |
| INNODB_SYS_DATAFILES                  |
| USER_STATISTICS                       |
| INNODB_SYS_TABLESTATS                 |
| INNODB_LOCKS                          |
| INNODB_MUTEXES                        |
| INNODB_CMPMEM                         |
| INNODB_CMP_PER_INDEX                  |
| INNODB_CMP                            |
| INNODB_FT_DELETED                     |
| INNODB_CMP_RESET                      |
| INNODB_LOCK_WAITS                     |
| TABLE_STATISTICS                      |
| INNODB_TABLESPACES_ENCRYPTION         |
| INNODB_BUFFER_PAGE_LRU                |
| INNODB_SYS_FIELDS                     |
| INNODB_CMPMEM_RESET                   |
| INNODB_SYS_COLUMNS                    |
| INNODB_FT_INDEX_TABLE                 |
| INNODB_CMP_PER_INDEX_RESET            |
| user_variables                        |
| INNODB_FT_INDEX_CACHE                 |
| INNODB_SYS_FOREIGN_COLS               |
| INNODB_FT_BEING_DELETED               |
| INNODB_BUFFER_POOL_STATS              |
| INNODB_TRX                            |
| INNODB_SYS_FOREIGN                    |
| INNODB_SYS_TABLES                     |
| INNODB_FT_DEFAULT_STOPWORD            |
| INNODB_FT_CONFIG                      |
| INNODB_BUFFER_PAGE                    |
| INNODB_SYS_TABLESPACES                |
| INNODB_METRICS                        |
| INNODB_SYS_INDEXES                    |
| INNODB_SYS_VIRTUAL                    |
| INNODB_TABLESPACES_SCRUBBING          |
| INNODB_SYS_SEMAPHORE_WAITS            |
+---------------------------------------+
76 rows in set (0.001 sec)
Формат конкретной выбранной таблицы PARTITIONS:

Код: Выделить всё

MariaDB [information_schema]> DESCRIBE PARTITIONS;
+-------------------------------+---------------------+------+-----+---------+-------+
| Field                         | Type                | Null | Key | Default | Extra |
+-------------------------------+---------------------+------+-----+---------+-------+
| TABLE_CATALOG                 | varchar(512)        | NO   |     |         |       |
| TABLE_SCHEMA                  | varchar(64)         | NO   |     |         |       |
| TABLE_NAME                    | varchar(64)         | NO   |     |         |       |
| PARTITION_NAME                | varchar(64)         | YES  |     | NULL    |       |
| SUBPARTITION_NAME             | varchar(64)         | YES  |     | NULL    |       |
| PARTITION_ORDINAL_POSITION    | bigint(21) unsigned | YES  |     | NULL    |       |
| SUBPARTITION_ORDINAL_POSITION | bigint(21) unsigned | YES  |     | NULL    |       |
| PARTITION_METHOD              | varchar(18)         | YES  |     | NULL    |       |
| SUBPARTITION_METHOD           | varchar(12)         | YES  |     | NULL    |       |
| PARTITION_EXPRESSION          | longtext            | YES  |     | NULL    |       |
| SUBPARTITION_EXPRESSION       | longtext            | YES  |     | NULL    |       |
| PARTITION_DESCRIPTION         | longtext            | YES  |     | NULL    |       |
| TABLE_ROWS                    | bigint(21) unsigned | NO   |     | 0       |       |
| AVG_ROW_LENGTH                | bigint(21) unsigned | NO   |     | 0       |       |
| DATA_LENGTH                   | bigint(21) unsigned | NO   |     | 0       |       |
| MAX_DATA_LENGTH               | bigint(21) unsigned | YES  |     | NULL    |       |
| INDEX_LENGTH                  | bigint(21) unsigned | NO   |     | 0       |       |
| DATA_FREE                     | bigint(21) unsigned | NO   |     | 0       |       |
| CREATE_TIME                   | datetime            | YES  |     | NULL    |       |
| UPDATE_TIME                   | datetime            | YES  |     | NULL    |       |
| CHECK_TIME                    | datetime            | YES  |     | NULL    |       |
| CHECKSUM                      | bigint(21) unsigned | YES  |     | NULL    |       |
| PARTITION_COMMENT             | varchar(80)         | NO   |     |         |       |
| NODEGROUP                     | varchar(12)         | NO   |     |         |       |
| TABLESPACE_NAME               | varchar(64)         | YES  |     | NULL    |       |
+-------------------------------+---------------------+------+-----+---------+-------+
25 rows in set (0.002 sec)

Аватара пользователя
Olej
Писатель
Сообщения: 13530
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: MySQL

Непрочитанное сообщение Olej » 25 дек 2019, 22:09

Olej писал(а):
25 дек 2019, 21:53
Попрактикуемся на установке экземпляра форума на localhost...
Показать количество строк в таблице:

Код: Выделить всё

MariaDB [information_schema]> SELECT COUNT(*) FROM PARTITIONS;
+----------+
| COUNT(*) |
+----------+
|      151 |
+----------+
1 row in set (0.007 sec)
Показать все строки таблицы:

Код: Выделить всё

MariaDB [information_schema]> SELECT * FROM PARTITIONS;
...

Аватара пользователя
Olej
Писатель
Сообщения: 13530
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: MySQL

Непрочитанное сообщение Olej » 25 дек 2019, 22:30

Olej писал(а):
25 дек 2019, 21:53
Попрактикуемся на установке экземпляра форума на localhost...
Теперь самое время перейти БД форума:

Код: Выделить всё

MariaDB [information_schema]> USE forum;
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
Таблицы phpBB:

Код: Выделить всё

MariaDB [forum]> SHOW TABLES;
+--------------------------+
| Tables_in_forum          |
+--------------------------+
| rl_comments              |
| rl_eval                  |
| rl_pages                 |
| rlf1_acl_groups          |
| rlf1_acl_options         |
| rlf1_acl_roles           |
| rlf1_acl_roles_data      |
| rlf1_acl_users           |
| rlf1_attachments         |
| rlf1_banlist             |
| rlf1_bbcodes             |
| rlf1_bookmarks           |
...
| rlf1_users               |
| rlf1_warnings            |
| rlf1_words               |
| rlf1_zebra               |
+--------------------------+
75 rows in set (0.001 sec)
Больше всего интересует : соответствие имён файлов в каталоге files phpBB + имён, отображаемых как вложения форума, таблица rlf1_attachments:

Код: Выделить всё

MariaDB [forum]> DESCRIBE rlf1_attachments;
+-------------------+-----------------------+------+-----+---------+----------------+
| Field             | Type                  | Null | Key | Default | Extra          |
+-------------------+-----------------------+------+-----+---------+----------------+
| attach_id         | int(10) unsigned      | NO   | PRI | NULL    | auto_increment |
| post_msg_id       | int(10) unsigned      | NO   | MUL | 0       |                |
| topic_id          | int(10) unsigned      | NO   | MUL | 0       |                |
| in_message        | tinyint(1) unsigned   | NO   |     | 0       |                |
| poster_id         | int(10) unsigned      | NO   | MUL | 0       |                |
| is_orphan         | tinyint(1) unsigned   | NO   | MUL | 1       |                |
| physical_filename | varchar(255)          | NO   |     |         |                |
| real_filename     | varchar(255)          | NO   |     |         |                |
| download_count    | mediumint(8) unsigned | NO   |     | 0       |                |
| attach_comment    | text                  | NO   |     | NULL    |                |
| extension         | varchar(100)          | NO   |     |         |                |
| mimetype          | varchar(100)          | NO   |     |         |                |
| filesize          | int(20) unsigned      | NO   |     | 0       |                |
| filetime          | int(11) unsigned      | NO   | MUL | 0       |                |
| thumbnail         | tinyint(1) unsigned   | NO   |     | 0       |                |
+-------------------+-----------------------+------+-----+---------+----------------+
15 rows in set (0.001 sec)
И, соответственно, все соответствия:

Код: Выделить всё

MariaDB [forum]> SELECT physical_filename, real_filename FROM rlf1_attachments;
+----------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------+
| physical_filename                      | real_filename                                                                                                                                           |
+----------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------+
| 3728_023903c15a8ccaff08bd8cc61e042a57  | Failure1.jpg                                                                                                                                            |
| 4065_2497f08530ae6e747635b9654561f012  | chart2.png                                                                                                                                              |
| 3832_9da978eda562a214330d2e320c8512ee  | nfsuserver.rar                                                                                                                                          |
| 4065_32d834b2c05feae5a696e1724976740c  | nvidia.info.png                                                                                                                                         |
| 4030_30b474da9d060c2af4bd70a69a9fbaf6  | mc.JPG                                                                                                                                                  |
| 4030_e6d745f8fc25e7ed66d53c297283e0d5  | localeru.JPG                                                                                                                                            |
| 4030_395193876c32471995c3c28485256cf0  | locale.JPG                                                                                                                                              |
| 4065_cd8020fa5d540906d63666ec575120a4  | utf.test.png                                                                                                                                            |
| 4072_2ae56f18c48e2fbab5640160d98eb588  | 10.png                                                                                                                                                  |
| 4072_bae8d1267472e6d39cff549f8a093219  | 7.png                                                                                                                                                   |
...
| 4065_7c82e57d4be4f511afd804b0c5588fdb  | scr-fs8.png                                                                                                                                             |
| 4065_6bf928bbbc6feb18afc00f179f26d5ea  | d2.png                                                                                                                                                  |
| 4065_8131c27fe8950c2704c15c51571e4343  | c1.jpg                                                                                                                                                  |
| 4065_d95d79dd9faa08af0e3bad01880535e3  | c1.200.jpg                                                                                                                                              |
| 4065_ec3ecce4c09b212caf2a18e8cc82a20f  | d3.png                                                                                                                                                  |
| 4065_5f3aa317ccc987b96d0038ef9e16a61d  | dt1.png                                                                                                                                                 |
| 4065_0f0f7bf18b1cdc0255ed6ea96200efc4  | v1.png                                                                                                                                                  |
+----------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------+
3612 rows in set (0.005 sec)

Аватара пользователя
Olej
Писатель
Сообщения: 13530
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: MySQL

Непрочитанное сообщение Olej » 25 дек 2019, 22:41

В частности, как найти потерянное вложение из сообщения viewtopic.php?f=28&p=23087#p23087 от 17 дек 2019, 03:21 (специально оставленным для тестирования), сообщение с номером 23087, с отображаемым именем v1.png:

Код: Выделить всё

MariaDB [forum]> SELECT physical_filename, real_filename, post_msg_id FROM rlf1_attachments WHERE real_filename='v1.png';
+---------------------------------------+---------------+-------------+
| physical_filename                     | real_filename | post_msg_id |
+---------------------------------------+---------------+-------------+
| 4065_8c4a330247a88fbc941622c20fbed8cf | v1.png        |       14853 |
| 4065_32b015c607167107194a1ceae4a50fc3 | v1.png        |       17226 |
| 4065_94fc4a711366486f8186370362944689 | v1.png        |       17505 |
| 4065_def9ccba2b0ef8d49197a9dcfa3aee9f | v1.png        |       19621 |
| 4065_ee9ca6927179a03bf9eb88036bc0eaa4 | v1.png        |       20431 |
| 4065_e1bbfcd3c0d51be2936eae7ae9070b6a | v1.png        |       20799 |
| 4065_2ba8aa44fd6c91ca441f99ebb2362b60 | v1.png        |       21332 |
| 4065_f27e9c51bdb4ceec27cfad7cf01f220e | v1.png        |       21519 |
| 4065_1fafad97167149592ddc2c1abfb299d7 | v1.png        |       22406 |
| 4065_2eea5c4f22e961f0fc4d5262155ea714 | v1.png        |       22414 |
| 4065_01c6a792313d340a56745479c15b618f | v1.png        |       22997 |
| 4065_e3dc4885a00bfaea748cfdb2c2fd2167 | v1.png        |       23037 |
| 4065_4faf77aead7496e55c301376fdc9ee68 | v1.png        |       23045 |
| 4065_0f0f7bf18b1cdc0255ed6ea96200efc4 | v1.png        |       23087 |
+---------------------------------------+---------------+-------------+
14 rows in set (0.001 sec)
Вот так:

Код: Выделить всё

olej@ACER:/var/www/html$ ls -l /var/www/html/files/4065_8c4a330247a88fbc941622c20fbed8cf
-rw-r--r-- 1 www-data www-data 94824 июн 30  2016 /var/www/html/files/4065_8c4a330247a88fbc941622c20fbed8cf

olej@ACER:/var/www/html$ file /var/www/html/files/4065_8c4a330247a88fbc941622c20fbed8cf
/var/www/html/files/4065_8c4a330247a88fbc941622c20fbed8cf: PNG image data, 882 x 684, 8-bit/color RGBA, non-interlaced
...

Код: Выделить всё

olej@ACER:/var/www/html$ ls -l /var/www/html/files/4065_0f0f7bf18b1cdc0255ed6ea96200efc4
-rw-rw-rw- 1 www-data www-data 65390 дек 17 02:29 /var/www/html/files/4065_0f0f7bf18b1cdc0255ed6ea96200efc4

olej@ACER:/var/www/html$ file /var/www/html/files/4065_0f0f7bf18b1cdc0255ed6ea96200efc4
/var/www/html/files/4065_0f0f7bf18b1cdc0255ed6ea96200efc4: PNG image data, 1052 x 816, 8-bit/color RGBA, non-interlaced

Аватара пользователя
Olej
Писатель
Сообщения: 13530
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: MySQL

Непрочитанное сообщение Olej » 25 дек 2019, 22:53

Olej писал(а):
25 дек 2019, 22:41
Вот так:

Код: Выделить всё

olej@ACER:/var/www/html$ ls -l /var/www/html/files/4065_8c4a330247a88fbc941622c20fbed8cf
-rw-r--r-- 1 www-data www-data 94824 июн 30  2016 /var/www/html/files/4065_8c4a330247a88fbc941622c20fbed8cf

olej@ACER:/var/www/html$ file /var/www/html/files/4065_8c4a330247a88fbc941622c20fbed8cf
/var/www/html/files/4065_8c4a330247a88fbc941622c20fbed8cf: PNG image data, 882 x 684, 8-bit/color RGBA, non-interlaced
...

Код: Выделить всё

olej@ACER:/var/www/html$ ls -l /var/www/html/files/4065_0f0f7bf18b1cdc0255ed6ea96200efc4
-rw-rw-rw- 1 www-data www-data 65390 дек 17 02:29 /var/www/html/files/4065_0f0f7bf18b1cdc0255ed6ea96200efc4

olej@ACER:/var/www/html$ file /var/www/html/files/4065_0f0f7bf18b1cdc0255ed6ea96200efc4
/var/www/html/files/4065_0f0f7bf18b1cdc0255ed6ea96200efc4: PNG image data, 1052 x 816, 8-bit/color RGBA, non-interlaced
Это было на локальной установке форума.
А вот на реальном WEB-форуме:

Код: Выделить всё

root@277938:~# file /var/www/linux-ru.ru/files/4065_8c4a330247a88fbc941622c20fbed8cf
/var/www/linux-ru.ru/files/4065_8c4a330247a88fbc941622c20fbed8cf: PNG image data, 882 x 684, 8-bit/color RGBA, non-interlaced

root@277938:~# file /var/www/linux-ru.ru/files/4065_0f0f7bf18b1cdc0255ed6ea96200efc4
/var/www/linux-ru.ru/files/4065_0f0f7bf18b1cdc0255ed6ea96200efc4: cannot open `/var/www/linux-ru.ru/files/4065_0f0f7bf18b1cdc0255ed6ea96200efc4' (No such file or directory)
И мы видим не разрешённую ссылку вложения на странице viewtopic.php?f=28&p=23087#p23087.
Не успели сохранить изображение перед бэкапом!

Аватара пользователя
Olej
Писатель
Сообщения: 13530
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: MySQL

Непрочитанное сообщение Olej » 18 янв 2020, 10:58

Olej писал(а):
25 дек 2019, 21:53
Описание команд MySQL в достаточной мере для администрирования форума - MySQL/MariaDB: наиболее используемые команды, примеры:
Ещё одна заметка, сильно выручившая в процессе возни с этим форумом: MySQL: смена пароля пользователя root.
Остановите сервер MySQL:
...
+ ещё то, что пришлось делать при добавлении нового пользователя в базу данных при обновлениях форума:

Код: Выделить всё

...
MariaDB [(none)]> 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
MariaDB [mysql]> Create user 'olej'@'localhost' identified by 'xxxxxx';
Query OK, 0 rows affected (0.001 sec)

MariaDB [mysql]> grant all privileges on forum.* to 'olej'@'localhost' with grant option;
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> Flush privileges;
Query OK, 0 rows affected (0.001 sec)
...

Аватара пользователя
Olej
Писатель
Сообщения: 13530
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: MySQL

Непрочитанное сообщение Olej » 27 янв 2020, 22:14

Olej писал(а):
25 дек 2019, 21:53
Описание команд MySQL в достаточной мере для администрирования форума - MySQL/MariaDB: наиболее используемые команды, примеры:
Следующий круг задач: очень объёмный, сложный и амбициозный - почистить таблицы БД от устаревших URL, записанных во внешней форме (http://...), ссылающихся на предыдущие 4-5 хостингов форума + превращение их во внутреннюю форму ссылок внутри форума.

Предстоит найти и поменять все такие ссылки:

Код: Выделить всё

http://rus-linux.net/forum/viewtopic  => viewtopic  
Кроме того, отследить все ссылки содержащие URL:

Код: Выделить всё

http://seocod
Это всё старые, битые, ссылки, которые понаделали предыдущие 5 или 6 администраторов форума, занимавшихся ним от случая к случаю ... когда в меру своей неквалифицированности, а когда из-ха "тяп-ляп" когда их привлекали со стороны на короткую подхалтуру. :evil: :oops:

Код: Выделить всё

MariaDB [forum]> SELECT COUNT(*) FROM rlf1_posts WHERE LOCATE('http://rus-linux.net/forum/viewtopic', post_text);
+----------+
| COUNT(*) |
+----------+
|      856 |
+----------+
1 row in set (0.915 sec)

MariaDB [forum]> SELECT COUNT(*) FROM rlf1_posts WHERE LOCATE('http://seocod.ru', post_text);
+----------+
| COUNT(*) |
+----------+
|       48 |
+----------+
1 row in set (1.365 sec)

Аватара пользователя
Olej
Писатель
Сообщения: 13530
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: MySQL

Непрочитанное сообщение Olej » 27 янв 2020, 22:24

Olej писал(а):
27 янв 2020, 22:14
Кроме того, отследить все ссылки содержащие URL:

Код: Выделить всё

MariaDB [forum]> SELECT forum_id,topic_id,post_id FROM rlf1_posts WHERE LOCATE('http://seocod.ru', post_text) LIMIT 10;
+----------+----------+---------+
| forum_id | topic_id | post_id |
+----------+----------+---------+
|        3 |       16 |      33 |
|        9 |     1331 |    1636 |
|        8 |     1391 |    1726 |
|        9 |     1409 |    1761 |
|        8 |     1412 |    1760 |
|       18 |     1384 |    3754 |
|        9 |     1409 |    1779 |
|        9 |     1406 |    1783 |
|       19 |     1421 |    1792 |
|        9 |     1484 |    2014 |
+----------+----------+---------+
10 rows in set (0.080 sec)

Код: Выделить всё

MariaDB [forum]> SELECT forum_id,topic_id,post_id FROM rlf1_posts WHERE LOCATE('http://rus-linux.net/forum/viewtopic', post_text) LIMIT 10;
+----------+----------+---------+
| forum_id | topic_id | post_id |
+----------+----------+---------+
|        3 |        7 |      12 |
|       33 |     1503 |    2133 |
|       33 |     1503 |    2226 |
|        4 |     1522 |    2244 |
|       37 |     1558 |    2512 |
|       12 |     1557 |    2513 |
|       37 |     1558 |    2520 |
|       37 |     1560 |    2534 |
|       12 |     1557 |    2545 |
|       18 |     1499 |    2584 |
+----------+----------+---------+
10 rows in set (0.064 sec)
Вот так нахожу сообщения, содержащие меня интересующие контексты.
Где:
- forum_id - номер форума,
- topic_id - номер темы
- post_id - номер сообщения
Если понадобится, то и:
- post_text - полный текст сообщения

Ответить

Вернуться в «Программирование»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость