Jadual Kandungan
1,binlog日志的困扰,先看下日志格式
2,测试例子:
3,查看binlog,打开是乱码模式,看不到执行的sql语句,如下所示
4,google,得知可以用–base64-output=DECODE-ROWS -v查看出来sql语句,如下所示
5,问题分析
4.1 REPEATABLE-READ和STATEMENT测试结果
4.2 REPEATABLE-READ和MIXED测试结果
Rumah pangkalan data tutorial mysql mysqlbinlog解析binlog乱码问题解密

mysqlbinlog解析binlog乱码问题解密

Mar 31, 2017 pm 04:51 PM

发现mysql库的binlog日志出来都是乱码,如下所示:
BINLOG ’
IXZqVhNIAAAALQAAAGcBAAAAAHoAAAAAAAEABHRlc3QAAno0AAEDAABUOcnY
IXZqVh5IAAAAKAAAAI8BAAAAAHoAAAAAAAEAAgAB//4BAAAAcu+UpA==,如果强行用-v出来也得不到具体执行的sql语句,这个问题困扰了很近,今天深入研究才发现核心问题所在。


1,binlog日志的困扰,先看下日志格式

mysql> show variables like '%binlog%';
+-----------------------------------------+----------------------+
| Variable_name                           | Value                |
+-----------------------------------------+----------------------+
| binlog_cache_size                       | 1048576              |
| binlog_checksum                         | CRC32                |
| binlog_direct_non_transactional_updates | OFF                  |
| binlog_format                           | MIXED                |
| binlog_max_flush_queue_time             | 0                    |
| binlog_order_commits                    | ON                   |
| binlog_row_image                        | FULL                 |
| binlog_rows_query_log_events            | OFF                  |
| binlog_stmt_cache_size                  | 32768                |
| innodb_api_enable_binlog                | OFF                  |
| innodb_locks_unsafe_for_binlog          | OFF                  |
| max_binlog_cache_size                   | 18446744073709547520 |
| max_binlog_size                         | 1073741824           |
| max_binlog_stmt_cache_size              | 18446744073709547520 |
| sync_binlog                             | 1                    |
+-----------------------------------------+----------------------+
15 rows in set (0.01 sec)

mysql>
Salin selepas log masuk

日志格式是MIXED的,这个表示一些特殊的uuid以及now()之类会记录成row,其它的仍然是记录sql模式。


2,测试例子:

mysql> use test;
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
mysql> create table z4 select 1 as a;
Query OK, 1 row affected (0.02 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> insert into z4 select 2;
Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql>
Salin selepas log masuk

blog为csdn博主黄杉(mchdba)所有,原地址为:http://blog.csdn.net/mchdba/article/details/50300035,谢绝转载。


3,查看binlog,打开是乱码模式,看不到执行的sql语句,如下所示

[[email protected] binlog_new]# ll
总用量 32
-rw-rw----. 1 mysql mysql   143 12月 10 21:09 mysql-bin.000001
-rw-rw----. 1 mysql mysql 17549 12月 11 15:06 mysql-bin.000002
-rw-rw----. 1 mysql mysql   618 12月 11 15:07 mysql-bin.000003
-rw-rw----. 1 mysql mysql   135 12月 11 15:06 mysql-bin.index
[[email protected] binlog_new]# /usr/local/mysql/bin/mysqlbinlog mysql-bin.000003
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#151211 15:06:46 server id 72  end_log_pos 120 CRC32 0x9961ff72     
Start: binlog v 4, server v 5.6.12-log created 151211 15:06:46
# Warning: this binlog is either in use or was not closed properly.
BINLOG '
BnZqVg9IAAAAdAAAAHgAAAABAAQANS42LjEyLWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAEzgNAAgAEgAEBAQEEgAAXAAEGggAAAAICAgCAAAACgoKGRkAAXL/
YZk=
'/*!*/;
# at 120
#151211 15:07:13 server id 72  end_log_pos 192 CRC32 0x3ea43b0e     
Query   thread_id=732   exec_time=0 error_code=0
SET TIMESTAMP=1449817633/*!*/;
SET @@session.pseudo_thread_id=732/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, 
@@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=1075838976/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8mb4 *//*!*/;
SET @@session.character_set_client=45,@@session.collation_connection=45,@@session.collation_server=45/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
BEGIN
/*!*/;
# at 192
#151211 15:07:13 server id 72  end_log_pos 314 CRC32 0xcaec51ae     
Query   thread_id=732   exec_time=0 error_code=0
use `test`/*!*/;
SET TIMESTAMP=1449817633/*!*/;
CREATE TABLE `z4` (
  `a` int(1) NOT NULL DEFAULT '0'
)
/*!*/;
# at 314
#151211 15:07:13 server id 72  end_log_pos 359 CRC32 0xd8c93954     
Table_map: `test`.`z4` mapped to number 122
# at 359
#151211 15:07:13 server id 72  end_log_pos 399 CRC32 0xa494ef72     
Write_rows: table id 122 flags: STMT_END_F

BINLOG '
IXZqVhNIAAAALQAAAGcBAAAAAHoAAAAAAAEABHRlc3QAAno0AAEDAABUOcnY
IXZqVh5IAAAAKAAAAI8BAAAAAHoAAAAAAAEAAgAB//4BAAAAcu+UpA==
'/*!*/;
# at 399
#151211 15:07:13 server id 72  end_log_pos 430 CRC32 0xd1ab5b55     
Xid = 6908
COMMIT/*!*/;
# at 430
#151211 15:07:20 server id 72  end_log_pos 502 CRC32 0xdfc3212d     
Query   thread_id=732   exec_time=0 error_code=0
SET TIMESTAMP=1449817640/*!*/;
BEGIN
/*!*/;
# at 502
#151211 15:07:20 server id 72  end_log_pos 547 CRC32 0xc59aab0e     
Table_map: `test`.`z4` mapped to number 122
# at 547
#151211 15:07:20 server id 72  end_log_pos 587 CRC32 0x648b02a4     
Write_rows: table id 122 flags: STMT_END_F

BINLOG '
KHZqVhNIAAAALQAAACMCAAAAAHoAAAAAAAEABHRlc3QAAno0AAEDAAAOq5rF
KHZqVh5IAAAAKAAAAEsCAAAAAHoAAAAAAAEAAgAB//4CAAAApAKLZA==
'/*!*/;
# at 587
#151211 15:07:20 server id 72  end_log_pos 618 CRC32 0x9b35600a     Xid = 6915
COMMIT/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
[[email protected] binlog_new]#
Salin selepas log masuk

PS:大家看到/usr/local/mysql/bin/mysqlbinlog mysql-bin.000003解析出来的都是KHZqVhNIAAAALQAAACMCAAAAAHoAAAA这样的乱码格式。


4,google,得知可以用–base64-output=DECODE-ROWS -v查看出来sql语句,如下所示

[[email protected] binlog_new]# /usr/local/mysql/bin/mysqlbinlog --base64-output=DECODE-ROWS -v mysql-bin.000003
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#151211 15:06:46 server id 72  end_log_pos 120 CRC32 0x9961ff72     Start: binlog v 4, server v 5.6.12-log created 151211 15:06:46
# Warning: this binlog is either in use or was not closed properly.
# at 120
#151211 15:07:13 server id 72  end_log_pos 192 CRC32 0x3ea43b0e     Query   thread_id=732   exec_time=0 error_code=0
SET TIMESTAMP=1449817633/*!*/;
SET @@session.pseudo_thread_id=732/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=1075838976/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8mb4 *//*!*/;
SET @@session.character_set_client=45,@@session.collation_connection=45,@@session.collation_server=45/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
BEGIN
/*!*/;
# at 192
#151211 15:07:13 server id 72  end_log_pos 314 CRC32 0xcaec51ae     Query   thread_id=732   exec_time=0 error_code=0
use `test`/*!*/;
SET TIMESTAMP=1449817633/*!*/;
CREATE TABLE `z4` (
  `a` int(1) NOT NULL DEFAULT '0'
)
/*!*/;
# at 314
#151211 15:07:13 server id 72  end_log_pos 359 CRC32 0xd8c93954     Table_map: `test`.`z4` mapped to number 122
# at 359
#151211 15:07:13 server id 72  end_log_pos 399 CRC32 0xa494ef72     Write_rows: table id 122 flags: STMT_END_F
### INSERT INTO `test`.`z4`
### SET
###   @1=1
# at 399
#151211 15:07:13 server id 72  end_log_pos 430 CRC32 0xd1ab5b55     Xid = 6908
COMMIT/*!*/;
# at 430
#151211 15:07:20 server id 72  end_log_pos 502 CRC32 0xdfc3212d     Query   thread_id=732   exec_time=0 error_code=0
SET TIMESTAMP=1449817640/*!*/;
BEGIN
/*!*/;
# at 502
#151211 15:07:20 server id 72  end_log_pos 547 CRC32 0xc59aab0e     Table_map: `test`.`z4` mapped to number 122
# at 547
#151211 15:07:20 server id 72  end_log_pos 587 CRC32 0x648b02a4     Write_rows: table id 122 flags: STMT_END_F
### INSERT INTO `test`.`z4`
### SET
###   @1=2
# at 587
#151211 15:07:20 server id 72  end_log_pos 618 CRC32 0x9b35600a     Xid = 6915
COMMIT/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
[[email protected] binlog_new]#
Salin selepas log masuk

确实可以看到sql语句,不过都是row模式的,如下所示:

### INSERT INTO `test`.`z4`
### SET
###   @1=2
# at 587
Salin selepas log masuk

看到不到应用程序或者客户端执行的真正sql语句,这样也不利于进行业务分析数据分析,无助于对程序的优化。


5,问题分析

这样binlog日志格式MIXED都录制为乱码,那我将换成STATEMENT格式看看是否会持续乱码?,修改完my.cnf后,重启mysql数据库,开始建表测试,但是报错如下:

mysql> create table z3 select 1 as a;
ERROR 1665 (HY000): Cannot execute statement: impossible to write to binary log since 
BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-based logging. 
InnoDB is limited to row-logging when transaction isolation level is READ COMMITTED or READ UNCOMMITTED.
mysql>
Salin selepas log masuk

问题发现了,看到问题贺新郎,隔离级别太低了,我的默认隔离级别是READ-COMMITTED,所以导致binlog记录的必须都是row模式,解析出来的是乱码,强行用-v显示出来也是row模式,所以我将隔离级别升级为REPEATABLE-READ的话,就会有row格式也会有statement格式了。接下来为了用2个小实例来验证我的判断:


4.1 REPEATABLE-READ和STATEMENT测试结果

**所以我将隔离级别升级为REPEATABLE-READ,binlog设置为binlog_format=STATEMENT
如下所示:**

# Set the default transaction isolation level. Levels available are:
# READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE
transaction_isolation = REPEATABLE-READ
binlog_format=STATEMENT
Salin selepas log masuk

然后重启mysql,看binlog的记录形式是啥样的,如下所示:

BEGIN
/*!*/;
# at 219
# at 251
#151211 16:15:02 server id 72  end_log_pos 251 CRC32 0x4ea440db     Intvar
SET INSERT_ID=10550/*!*/;
#151211 16:15:02 server id 72  end_log_pos 435 CRC32 0xa37c5f2d     Query   thread_id=1 exec_time=0 error_code=0
use `parking_db`/*!*/;
SET TIMESTAMP=1449821702/*!*/;
INSERT INTO access_log.access_log VALUES(NULL,CONNECTION_ID(),NOW(),USER(),CURRENT_USER())
/*!*/;
# at 435
#151211 16:15:02 server id 72  end_log_pos 466 CRC32 0x2970e89a     Xid = 3
COMMIT/*!*/;
# at 466
#151211 16:16:22 server id 72  end_log_pos 569 CRC32 0xbe43b367     Query   thread_id=2 exec_time=0 error_code=0
use `test`/*!*/;
SET TIMESTAMP=1449821782/*!*/;
create table z4 select 1 as a
/*!*/;
# at 569
#151211 16:16:32 server id 72  end_log_pos 648 CRC32 0x69b2383c     Query   thread_id=2 exec_time=0 error_code=0
SET TIMESTAMP=1449821792/*!*/;
BEGIN
/*!*/;
# at 648
#151211 16:16:32 server id 72  end_log_pos 745 CRC32 0xcd1721a4     Query   thread_id=2 exec_time=0 error_code=0
SET TIMESTAMP=1449821792/*!*/;
insert into z4 select 2
/*!*/;
# at 745
#151211 16:16:32 server id 72  end_log_pos 776 CRC32 0xfc0dcfc4     Xid = 70
COMMIT/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
[[email protected] binlog_new]#
Salin selepas log masuk

看到有类似的INSERT INTO access_log.access_log VALUES(NULL,CONNECTION_ID(),NOW(),USER(),CURRENT_USER())这里的一些函数最好用row模式,因为主从复制的时候,uuid已经now()等会造成时间延迟,故而为了数据一致性,statement格式不是最佳选择。


4.2 REPEATABLE-READ和MIXED测试结果

my.cnf里面修改设置:

transaction_isolation = REPEATABLE-READ
binlog_format=MIXED
Salin selepas log masuk

重启mysql数据库后,录入测试数据:

mysql> insert into z4 select 3;
Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> exit
Salin selepas log masuk

查看binlog数据,会看到insert into z4 select 3这条sql记录,表明在mixed模式下,解析出来的sql是正常的,有些now()已经uuid的直接解析成row格式了,如下所示:

[[email protected] binlog_new]# /usr/local/mysql/bin/mysqlbinlog 
--base64-output=DECODE-ROWS -v mysql-bin.000007
...
# at 274
#151211 16:21:02 server id 72  end_log_pos 368 CRC32 0x156a1c51     Write_rows: table id 70 flags: STMT_END_F
### INSERT INTO `access_log`.`access_log`
### SET
###   @1=10551
###   @2=1
###   @3=1449822062
###   @4='[email protected]'
###   @5='[email protected]%'
# at 368
#151211 16:21:02 server id 72  end_log_pos 399 CRC32 0x8254defe     Xid = 3
COMMIT/*!*/;
# at 399
#151211 16:21:25 server id 72  end_log_pos 478 CRC32 0xe252f5c7     Query   thread_id=2 exec_time=0 error_code=0
SET TIMESTAMP=1449822085/*!*/;
BEGIN
/*!*/;
# at 478
#151211 16:21:25 server id 72  end_log_pos 575 CRC32 0x34308ad6     Query   thread_id=2 exec_time=0 error_code=0
use `test`/*!*/;
SET TIMESTAMP=1449822085/*!*/;
insert into z4 select 3
/*!*/;
# at 575
#151211 16:21:25 server id 72  end_log_pos 606 CRC32 0x67c460eb     Xid = 61
COMMIT/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
[[email protected] binlog_new]#
Salin selepas log masuk
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara membuka phpmyadmin Cara membuka phpmyadmin Apr 10, 2025 pm 10:51 PM

Anda boleh membuka phpmyadmin melalui langkah -langkah berikut: 1. Log masuk ke panel kawalan laman web; 2. Cari dan klik ikon phpmyadmin; 3. Masukkan kelayakan MySQL; 4. Klik "Login".

MySQL: Pengenalan kepada pangkalan data paling popular di dunia MySQL: Pengenalan kepada pangkalan data paling popular di dunia Apr 12, 2025 am 12:18 AM

MySQL adalah sistem pengurusan pangkalan data relasi sumber terbuka, terutamanya digunakan untuk menyimpan dan mengambil data dengan cepat dan boleh dipercayai. Prinsip kerjanya termasuk permintaan pelanggan, resolusi pertanyaan, pelaksanaan pertanyaan dan hasil pulangan. Contoh penggunaan termasuk membuat jadual, memasukkan dan menanyakan data, dan ciri -ciri canggih seperti Operasi Join. Kesalahan umum melibatkan sintaks SQL, jenis data, dan keizinan, dan cadangan pengoptimuman termasuk penggunaan indeks, pertanyaan yang dioptimumkan, dan pembahagian jadual.

Cara menggunakan redis berulir tunggal Cara menggunakan redis berulir tunggal Apr 10, 2025 pm 07:12 PM

Redis menggunakan satu seni bina berulir untuk memberikan prestasi tinggi, kesederhanaan, dan konsistensi. Ia menggunakan I/O multiplexing, gelung acara, I/O yang tidak menyekat, dan memori bersama untuk meningkatkan keserasian, tetapi dengan batasan batasan konkurensi, satu titik kegagalan, dan tidak sesuai untuk beban kerja yang berintensifkan.

Tempat Mysql: Pangkalan Data dan Pengaturcaraan Tempat Mysql: Pangkalan Data dan Pengaturcaraan Apr 13, 2025 am 12:18 AM

Kedudukan MySQL dalam pangkalan data dan pengaturcaraan sangat penting. Ia adalah sistem pengurusan pangkalan data sumber terbuka yang digunakan secara meluas dalam pelbagai senario aplikasi. 1) MySQL menyediakan fungsi penyimpanan data, organisasi dan pengambilan data yang cekap, sistem sokongan web, mudah alih dan perusahaan. 2) Ia menggunakan seni bina pelanggan-pelayan, menyokong pelbagai enjin penyimpanan dan pengoptimuman indeks. 3) Penggunaan asas termasuk membuat jadual dan memasukkan data, dan penggunaan lanjutan melibatkan pelbagai meja dan pertanyaan kompleks. 4) Soalan -soalan yang sering ditanya seperti kesilapan sintaks SQL dan isu -isu prestasi boleh disahpepijat melalui arahan jelas dan log pertanyaan perlahan. 5) Kaedah pengoptimuman prestasi termasuk penggunaan indeks rasional, pertanyaan yang dioptimumkan dan penggunaan cache. Amalan terbaik termasuk menggunakan urus niaga dan preparedStatemen

Mengapa menggunakan mysql? Faedah dan kelebihan Mengapa menggunakan mysql? Faedah dan kelebihan Apr 12, 2025 am 12:17 AM

MySQL dipilih untuk prestasi, kebolehpercayaan, kemudahan penggunaan, dan sokongan komuniti. 1.MYSQL Menyediakan fungsi penyimpanan dan pengambilan data yang cekap, menyokong pelbagai jenis data dan operasi pertanyaan lanjutan. 2. Mengamalkan seni bina pelanggan-pelayan dan enjin penyimpanan berganda untuk menyokong urus niaga dan pengoptimuman pertanyaan. 3. Mudah digunakan, menyokong pelbagai sistem operasi dan bahasa pengaturcaraan. 4. Mempunyai sokongan komuniti yang kuat dan menyediakan sumber dan penyelesaian yang kaya.

Cara menyambung ke pangkalan data Apache Cara menyambung ke pangkalan data Apache Apr 13, 2025 pm 01:03 PM

Apache menyambung ke pangkalan data memerlukan langkah -langkah berikut: Pasang pemacu pangkalan data. Konfigurasikan fail web.xml untuk membuat kolam sambungan. Buat sumber data JDBC dan tentukan tetapan sambungan. Gunakan API JDBC untuk mengakses pangkalan data dari kod Java, termasuk mendapatkan sambungan, membuat kenyataan, parameter mengikat, melaksanakan pertanyaan atau kemas kini, dan hasil pemprosesan.

Pantau titisan redis dengan perkhidmatan pengeksport redis Pantau titisan redis dengan perkhidmatan pengeksport redis Apr 10, 2025 pm 01:36 PM

Pemantauan yang berkesan terhadap pangkalan data REDIS adalah penting untuk mengekalkan prestasi yang optimum, mengenal pasti kemungkinan kesesakan, dan memastikan kebolehpercayaan sistem keseluruhan. Perkhidmatan Pengeksport Redis adalah utiliti yang kuat yang direka untuk memantau pangkalan data REDIS menggunakan Prometheus. Tutorial ini akan membimbing anda melalui persediaan lengkap dan konfigurasi perkhidmatan pengeksport REDIS, memastikan anda membina penyelesaian pemantauan dengan lancar. Dengan mengkaji tutorial ini, anda akan mencapai tetapan pemantauan operasi sepenuhnya

Cara Memulakan MySQL oleh Docker Cara Memulakan MySQL oleh Docker Apr 15, 2025 pm 12:09 PM

Proses memulakan MySQL di Docker terdiri daripada langkah -langkah berikut: Tarik imej MySQL untuk membuat dan memulakan bekas, tetapkan kata laluan pengguna root, dan memetakan sambungan pengesahan port Buat pangkalan data dan pengguna memberikan semua kebenaran ke pangkalan data

See all articles