Halaman ini menjelaskan cara kerja Cloud SQL dengan pengguna MySQL. Akun pengguna MySQL memberikan keamanan dengan mengontrol akses ke database MySQL.
Untuk dokumentasi lengkap tentang pengguna di MySQL, lihat Kontrol Akses dan Pengelolaan Akun di dokumentasi MySQL. Untuk informasi tentang cara membuat dan mengelola pengguna Cloud SQL di Cloud SQL, lihat Membuat dan mengelola pengguna.
Mengapa Anda memerlukan akun pengguna MySQL
Dengan akun pengguna MySQL, Anda dapat login dan mengelola instance Cloud SQL. Akun pengguna juga diperlukan agar aplikasi dapat mengakses instance Anda.
Pembatasan superuser
Di Cloud SQL, pelanggan tidak dapat membuat atau mengakses pengguna dengan atribut superuser.
Karena merupakan layanan terkelola, Cloud SQL untuk MySQL membatasi akses ke prosedur dan tabel sistem tertentu.
Hak istimewa Data Manipulation Language (DML) dan Data Definition Language (DDL) dibatasi pada beberapa tabel skema.
Berikut adalah daftar tabel sistem MySQL 5.6 dalam skema
mysql yang memerlukan izin tertulis:
audit_log_rules_expanded
, audit_log_supported_ops
, audit_log_rules
,
cloudsql_replica_index
, db
, event
, func
, heartbeat
, plugin
, proc
,
user
, and tables_priv
.
Untuk MySQL 5.7, berikut adalah daftarnya:
audit_log_rules_expanded
, audit_log_supported_ops
, audit_log_rules
,
cloudsql_replica_index
, db
, event
, func
, gtid_executed
,
heartbeat
, plugin
, proc
, user
, and tables_priv
.
Untuk informasi terkait tentang MySQL 8.0 dan MySQL 8.4, lihat Hak istimewa pengguna MySQL 8.0 (cloudsqlsuperuser) dan Hak istimewa pengguna MySQL 8.4 (cloudsqlsuperuser).
Format akun pengguna MySQL
Akun pengguna MySQL memiliki dua komponen: nama pengguna dan nama host. Nama pengguna mengidentifikasi pengguna, dan nama host menentukan host yang dapat terhubung dengan pengguna. Nama pengguna dan nama host digabungkan untuk membuat akun pengguna:
'<user_name>'@'<host_name>'
Anda dapat menentukan alamat IP atau rentang alamat tertentu untuk nama host, atau menggunakan karakter persen ("%") agar nama host tidak dibatasi. Perhatikan bahwa jika Anda terhubung ke instance menggunakan alamat IP, Anda harus menambahkan alamat IP klien sebagai Alamat Resmi, meskipun nama host pengguna tidak dibatasi.
Akun pengguna ditentukan oleh nama pengguna dan nama host. Misalnya,
'user'@'%'
adalah akun pengguna yang berbeda dengan
'user'@'localhost'
.
Pengguna MySQL default
Setelah dibuat, instance MySQL memiliki satu akun pengguna default:
'root'@'%'
. Anda menggunakan akun ini untuk terhubung ke dan mengelola
instance database untuk pertama kalinya. Pengguna default memiliki semua hak istimewa
database kecuali untuk
SUPER
dan
FILE. Di Cloud SQL, Anda
tidak dapat mengganti nama 'root'@'%'
.
Setelan default untuk root'@'%
itu tidak memiliki sandi, dan MySQL tidak mengharuskan Anda menggunakan
sandi untuk root'@'%
. Namun, karena root'@'%
ada di sebagian besar penginstalan
MySQL, root'@'%
pengguna adalah target umum untuk akses tidak sah.
Setiap orang atau program yang mendapatkan akses ke instance Anda memiliki akses yang hampir
tidak terbatas ke, dan kontrol atas, instance dan data Anda. Karena alasan ini,
sebaiknya konfigurasikan pengguna root'@'%
Anda dengan sandi yang kuat atau hapus
pengguna ini. Untuk mendapatkan bantuan dalam mengonfigurasi akun pengguna default, lihat
Konfigurasi akun pengguna default.
Pengguna sistem
Ada tujuh pengguna sistem:
root@localhost
,[email protected]
,root@::1
Digunakan untuk menyediakan layanan database terkelola.
cloudsqlreplica@%
Digunakan sebagai pengguna replikasi untuk replika.
cloudsqlimport@localhost
,[email protected]
Digunakan untuk impor data.
cloudsqlexport@localhost
,[email protected]
Digunakan untuk ekspor data.
cloudsqloneshot
Digunakan untuk operasi database lainnya.
cloudsqlapplier@localhost
Digunakan untuk operasi replikasi dalam replika server eksternal atau replikasi versi lintas utama.
cloudsqlobservabilityadmin
Digunakan untuk kemampuan observasi database.
cloudiamgroup@'%'
Digunakan untuk autentikasi grup IAM.
Anda tidak dapat menghapus atau mengubah pengguna ini.
Akun pengguna MySQL lainnya
Anda juga dapat membuat akun pengguna MySQL lainnya. Ini adalah praktik yang baik karena memungkinkan Anda menggunakan akun pengguna MySQL yang berbeda untuk tujuan yang berbeda.
Anda dapat membuat akun pengguna dengan nama host yang dibatasi, atau menggunakan perintah SQL untuk membatasi hak istimewa pada akun pengguna.
Untuk mengetahui informasi selengkapnya tentang nama akun pengguna, lihat Menentukan Nama Akun dalam dokumentasi MySQL. Untuk membuat pengguna MySQL baru di Cloud SQL, lihat Membuat pengguna.
Hak istimewa pengguna MySQL 5.6 dan 5.7
MySQL menyediakan hak istimewa terperinci yang dapat Anda berikan atau hapus untuk pengguna. Hal ini memungkinkan Anda mengontrol tindakan yang dapat dilakukan pengguna pada instance.
Pengguna yang dibuat menggunakan Cloud SQL memiliki hak istimewa yang sama dengan
pengguna MySQL default. Anda dapat mengubah hak istimewa pengguna menggunakan pernyataan
GRANT
atau
REVOKE
.
Saat menggunakan mysql
klien untuk membuat pengguna, Anda harus secara eksplisit memberikan
hak istimewa kepada pengguna tersebut dengan pernyataan
GRANT
.
Untuk mengetahui informasi selengkapnya tentang hak istimewa yang didukung oleh MySQL, lihat Hak Istimewa yang Diberikan oleh MySQL.
Hak istimewa pengguna MySQL 8.0 (cloudsqlsuperuser
)
Di Cloud SQL untuk MySQL 8.0, saat Anda membuat pengguna baru, pengguna tersebut
otomatis diberi peran cloudsqlsuperuser
. Peran cloudsqlsuperuser
role
adalah peran Cloud SQL yang berisi sejumlah hak istimewa MySQL. Peran ini
memberi pengguna semua MySQL kepada pengguna hak istimewa statis, kecuali untuk SUPER
dan FILE
.
Peran cloudsqlsuperuser
hanya mendukung hak istimewa dinamis berikut berdasarkan versi minor MySQL 8.0:
MySQL 8.0.18
MySQL 8.0.26
MySQL 8.0.27
MySQL 8.0.28
APPLICATION_PASSWORD_ADMIN
CONNECTION_ADMIN
ROLE_ADMIN
SET_USER_ID
XA_RECOVER_ADMIN
CLOUDSQL_SPECIAL_VARIABLES_ADMIN
FLUSH_OPTIMIZER_COSTS
FLUSH_STATUS
FLUSH_TABLES
FLUSH_USER_RESOURCES
INNODB_REDO_LOG_ENABLE
SHOW_ROUTINE
AUTHENTICATION_POLICY_ADMIN
GROUP_REPLICATION_STREAM
PASSWORDLESS_USER_ADMIN
AUDIT_ABORT_EXEMPT
MySQL 8.0.29 (tidak digunakan lagi)
APPLICATION_PASSWORD_ADMIN
CONNECTION_ADMIN
ROLE_ADMIN
SET_USER_ID
XA_RECOVER_ADMIN
CLOUDSQL_SPECIAL_VARIABLES_ADMIN
FLUSH_OPTIMIZER_COSTS
FLUSH_STATUS
FLUSH_TABLES
FLUSH_USER_RESOURCES
INNODB_REDO_LOG_ENABLE
SHOW_ROUTINE
AUTHENTICATION_POLICY_ADMIN
GROUP_REPLICATION_STREAM
PASSWORDLESS_USER_ADMIN
AUDIT_ABORT_EXEMPT
SENSITIVE_VARIABLES_OBSERVER
MySQL 8.0.30 dan yang lebih baru
APPLICATION_PASSWORD_ADMIN
CONNECTION_ADMIN
ROLE_ADMIN
SET_USER_ID
XA_RECOVER_ADMIN
CLOUDSQL_SPECIAL_VARIABLES_ADMIN
FLUSH_OPTIMIZER_COSTS
FLUSH_STATUS
FLUSH_TABLES
FLUSH_USER_RESOURCES
INNODB_REDO_LOG_ENABLE
SHOW_ROUTINE
AUTHENTICATION_POLICY_ADMIN
GROUP_REPLICATION_STREAM
PASSWORDLESS_USER_ADMIN
AUDIT_ABORT_EXEMPT
SENSITIVE_VARIABLES_OBSERVER
FIREWALL_EXEMPT
Peran cloudsqlsuperuser
tidak mendukung operasi Data Definition Language (DDL)
apa pun di database sistem mysql
system database.
Untuk melihat daftar lengkap hak istimewa yang diberikan kepada peran cloudsqlsuperuser
, jalankan pernyataan SHOW GRANTS
di klien mysql
:
SHOW GRANTS FOR 'cloudsqlsuperuser'
Hak istimewa pengguna MySQL 8.4 (cloudsqlsuperuser
)
Serupa dengan Cloud SQL untuk MySQL 8.0, di Cloud SQL untuk MySQL 8.4, saat Anda membuat pengguna baru, pengguna tersebut otomatis diberi peran cloudsqlsuperuser
.
Di MySQL 8.4, perancloudsqlsuperuser
memiliki hak istimewa yang sama dengan MySQL 8.0.x.
Namun, MySQL 8.4 memiliki perbedaan utama berikut dengan MySQL 8.0.x:
- Menghapus hak istimewa
SET_USER_ID
dan menggantinya dengan hak istimewaALLOW_NONEXISTENT_DEFINER
danSET_ANY_DEFINER
yang baru diperkenalkan. - Memberikan
FLUSH_PRIVILEGES
sebagai subset dari hak istimewaRELOAD
. Pemberian ini bukan pengganti hak istimewaRELOAD
, dan hak istimewaRELOAD
masih diberikan untuk kompatibilitas mundur. - Memberikan hak istimewa
OPTIMIZE_LOCAL_TABLE
baru.
Selain itu, Cloud SQL untuk MySQL 8.4 tidak memberikan hak istimewa
TRANSACTION_GTID_TAG
atau TELEMETRY_LOG_ADMIN
yang diperkenalkan di MySQL 8.4.
Langkah selanjutnya
- Konfigurasi akun pengguna
root
untuk instance Anda. - Membuat dan mengelola pengguna..
- Membuat dan mengelola database.
- Lihat dokumentasi MySQL tentang pengguna MySQL.
- Lihat dokumentasi MySQL tentang hak istimewa yang diberikan oleh MySQL.
- Pelajari tentang opsi untuk terhubung ke instance Anda.