Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 13228|Απάντηση: 3

[Πηγή] Η επανεγγραφή της Java JDBCBatchedStatements, allowPublicKeyRetrieval...

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 2022-2-11 13:59:18 | | |
Βελτιστοποιήθηκε η απόδοση των διαμορφώσεων rewriteBatchedStatements, allowPublicKeyRetrieval, allowMultiQueries και sslMode της Java JDBC.

jdbc Τεκμηρίωση όλων των ιδιοτήτων διαμόρφωσης:Η σύνδεση με υπερσύνδεσμο είναι ορατή.

Αναθεώρηση:

.NET/C# Βελτιστοποιήθηκε η απόδοση του SslMode για βάσεις δεδομένων MySQL
https://www.itsvse.com/thread-9956-1-1.html

allowPublicKeyRetrieval

Όταν χρησιμοποιείτε MySQL 8.0, μετά την επανεκκίνηση της εφαρμογής, θα σας ζητηθεί com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Δεν επιτρέπεται η ανάκτηση δημόσιου κλειδιού

Η πιο εύκολη λύση είναι να το προσθέσετε μετά τη σύνδεσηallowPublicKeyRetrieval=true

Εάν ο χρήστης χρησιμοποιεί sha256_password έλεγχο ταυτότητας, ο κωδικός πρόσβασης πρέπει να προστατεύεται κατά τη μεταφορά χρησιμοποιώντας το πρωτόκολλο TLS, αλλά εάν το δημόσιο κλειδί RSA δεν είναι διαθέσιμο, μπορεί να χρησιμοποιηθεί το δημόσιο κλειδί που παρέχεται από τον διακομιστή. Το δημόσιο κλειδί RSA του διακομιστή μπορεί να καθοριστεί στη σύνδεση μέσω του ServerRSAPublicKeyFile ή της παραμέτρου AllowPublicKeyRetrieval=True για να επιτρέψει στον πελάτη να αποκτήσει το δημόσιο κλειδί από τον διακομιστή. Ωστόσο, θα πρέπει να σημειωθεί ότι το AllowPublicKeyRetrieval=True μπορεί να προκαλέσει κακόβουλους παράγοντες να αποκτήσουν κωδικούς πρόσβασης απλού κειμένου μέσω επιθέσεων man-in-the-middle (MITM), επομένως είναι απενεργοποιημένο από προεπιλογή και πρέπει να ενεργοποιηθεί ρητά.



ξαναγράφωΟμαδοποιημένεςΔηλώσεις

Προκειμένου να επιτευχθεί εισαγωγή παρτίδας υψηλής απόδοσης προσθέτοντας την παράμετρο rewriteBatchedStatements στη διεύθυνση URL της σύνδεσης JDBC στη MySQL και διασφαλίζοντας ότι η έκδοση του προγράμματος οδήγησης 5.1.13 ή νεότερη είναι εγγυημένη. Από προεπιλογή, το πρόγραμμα οδήγησης MySQL JDBC αγνοεί τη δήλωση executeBatch(), χωρίζει ένα σύνολο εντολών SQL που αναμένουμε να εκτελεστούν σε παρτίδες και τις στέλνει στη βάση δεδομένων MySQL μία προς μία.
Μόνο ορίζοντας την παράμετρο rewriteBatchedStatements σε true ο οδηγός θα εκτελέσει την SQL σε παρτίδες
Αυτή η επιλογή ισχύει επίσης για INSERT/UPDATE/DELETE

Από προεπιλογή, το πρόγραμμα οδήγησης MySQL Jdbc αγνοεί τη δήλωση executeBatch(), διασπά ένα σύνολο εντολών SQL που αναμένουμε να εκτελέσουμε σε παρτίδες και τις στέλνει στη βάση δεδομένων MySQL μία προς μία, γεγονός που προκαλεί άμεσα χαμηλή απόδοση.

Μόνο ορίζοντας την παράμετρο rewriteBatchedStatements σε true, ο οδηγός θα σας βοηθήσει να εκτελέσετε SQL μαζικά (jdbc:mysql://ip:port/db?)ξαναγράφωBatchedStatements=true)


allowMultiQueries

Άδεια χρήσης»· ' Διαχωρίζει πολλά ερωτήματα (αληθές/ψευδές) σε μία πρόταση. Η προεπιλεγμένη τιμή είναι "false", η οποία δεν επηρεάζει τις μεθόδους addBatch() και executeBatch(), οι οποίες εξαρτώνται από το rewriteBatchStatements.

Όταν η MySQL συνδέεται σε μια βάση δεδομένων, προσθέστε τη δήλωση:"allowMultiQueries=trueΟ ρόλος του ":

1. Μπορείτε να μεταφέρετε ένα ερωτηματικό μετά τη δήλωση SQL για να επιτύχετε εκτέλεση πολλαπλών δηλώσεων.
2. Μπορεί να πραγματοποιηθεί μαζική επεξεργασία και να εκδοθούν ταυτόχρονα πολλαπλές δηλώσεις SQL.


sslMode

Από προεπιλογή, οι συνδέσεις δικτύου είναι κρυπτογραφημένες SSL. Αυτή η ιδιότητα σάς επιτρέπει να απενεργοποιήσετε την ασφαλή σύνδεση ή να επιλέξετε διαφορετικό επίπεδο ασφάλειας. Επιτρέπονται οι ακόλουθες τιμές: "DISABLED" - δημιουργείται μια μη κρυπτογραφημένη σύνδεση. "PREFERRED" - (προεπιλογή) Εάν ο διακομιστής ενεργοποιήσει κρυπτογραφημένες συνδέσεις, δημιουργείται μια κρυπτογραφημένη σύνδεση, διαφορετικά επιστρέφει σε μια μη κρυπτογραφημένη σύνδεση. "ΑΠΑΙΤΕΙΤΑΙ" - Δημιουργήστε μια ασφαλή σύνδεση εάν ο διακομιστής την έχει ενεργοποιήσει, διαφορετικά αποτυγχάνει. "VERIFY_CA" - Παρόμοιο με το "ΑΠΑΙΤΕΙΤΑΙ", αλλά επιπλέον επικυρώνει το πιστοποιητικό TLS διακομιστή σε σχέση με το πιστοποιητικό της διαμορφωμένης αρχής έκδοσης πιστοποιητικών (CA). "VERIFY_IDENTITY" - όπως "VERIFY_CA",

Αυτό το χαρακτηριστικό αντικαθιστά τα παρωχημένα παλιά χαρακτηριστικά "useSSL", "requireSSL" και "verifyServerCertificate", τα οποία εξακολουθούν να γίνονται αποδεκτά αλλά μετατρέπονται στην τιμή του "sslMode" εάν το "sslMode" δεν έχει οριστεί ρητά: το "useSSL=false" μετατρέπεται σε "sslMode=disabled". {"useSSL=true", "requireSSL=false", "verifyServerCertificate=false"} μεταφράζεται ως "sslMode=PREFERRED"; {"useSSL=true", "requireSSL=true", "verifyServerCertificate=false"} μεταφράζεται ως "sslMode=REQUIRED"; {"useSSL=true" ΚΑΙ το "verifyServerCertificate=true"} μεταφράζεται ως "Η προεπιλεγμένη ρύθμιση για το "sslMode" είναι "PREFERRED", η οποία είναι ισοδύναμη με τις παραδοσιακές ρυθμίσεις "useSSL=true", "requireSSL=false" και "verifyServerCertificate=false", οι οποίες είναι ίδιες με τις ρυθμίσεις Connector/ Οι προεπιλεγμένες ρυθμίσεις για το J 8.0.12 και παλαιότερες εκδόσεις είναι διαφορετικές σε ορισμένες περιπτώσεις. Οι εφαρμογές που συνεχίζουν να χρησιμοποιούν τα παλιά χαρακτηριστικά και βασίζονται στις παλιές προεπιλογές τους θα πρέπει να αναθεωρηθούν. Η προεπιλεγμένη ρύθμιση για το "sslMode" είναι "PREFERRED", η οποία είναι ισοδύναμη με τις παραδοσιακές ρυθμίσεις των "useSSL=true", "requireSSL=false" και "verifyServerCertificate=false", η οποία είναι διαφορετική από την προεπιλεγμένη ρύθμιση για το Connector/ J 8.0.12 και παλαιότερα σε ορισμένες περιπτώσεις. Οι εφαρμογές που συνεχίζουν να χρησιμοποιούν τα παλιά χαρακτηριστικά και βασίζονται στις παλιές προεπιλογές τους θα πρέπει να αναθεωρηθούν. Σε ορισμένες περιπτώσεις είναι 12 ή νωρίτερα. Οι εφαρμογές που συνεχίζουν να χρησιμοποιούν τα παλιά χαρακτηριστικά και βασίζονται στις παλιές προεπιλογές τους θα πρέπει να αναθεωρηθούν. Σε ορισμένες περιπτώσεις είναι 12 ή νωρίτερα. Οι εφαρμογές που συνεχίζουν να χρησιμοποιούν τα παλιά χαρακτηριστικά και βασίζονται στις παλιές προεπιλογές τους θα πρέπει να αναθεωρηθούν.

Εάν το "sslMode" έχει οριστεί ρητά, η παλιά ιδιότητα αγνοείται. Εάν το "sslMode" ή το "useSSL" δεν έχει οριστεί ρητά, εφαρμόζεται η προεπιλεγμένη ρύθμιση "sslMode=PREFERRED".

Ρυθμίσεις JDBC για απενεργοποίηση ασφαλών συνδέσεων:sslmode=απενεργοποιημένο




Προηγούμενος:Πώς να μετονομάσετε αρχεία σε παρτίδες στο Linux
Επόμενος:Πώς να περιορίσετε τους Ταϊβανέζους χρήστες από την εγγραφή, να δημοσιεύσετε πληροφορίες κατά βούληση και να ζητήσετε συμβουλές για το πώς να γράφουν.
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 2022-2-11 14:04:39 |
Συμβολοσειρά σύνδεσης βάσης δεδομένων ελατηρίου

Δημοσιεύτηκε στις 2022-2-13 16:31:57 |
Μάθε να μαθαίνεις.
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 2024-4-25 08:38:32 |
Εξαίρεση C#
System.InvalidOperationException: An exception has been raised that is likely due to a transient failure. Consider enabling transient error resiliency by adding 'EnableRetryOnFailure()' to the 'UseMySql' call.
---> MySqlConnector.MySqlException (0x80004005): Η μέθοδος ελέγχου ταυτότητας 'caching_sha2_password' απέτυχε. Χρησιμοποιήστε μια ασφαλή σύνδεση, καθορίστε το δημόσιο κλειδί RSA του διακομιστή με το ServerRSAPublicKeyFile ή ορίστε το AllowPublicKeyRetrieval=True.


λύση

Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com