Jadual kebenaran pangkalan data MySQL termasuk: 1. jadual pengguna, digunakan untuk merekodkan maklumat akaun yang dibenarkan untuk menyambung ke pelayan Semua kebenaran yang didayakan dalam jadual ini adalah global dan boleh digunakan untuk semua pangkalan data , menyimpan kebenaran operasi pengguna untuk pangkalan data tertentu 3. tables_priv table, digunakan untuk menetapkan kebenaran untuk satu jadual 4. columns_priv table, digunakan untuk menetapkan kebenaran untuk satu lajur data 5. procs_priv table, digunakan untuk penyimpanan Prosedur dan set fungsi tersimpan; kebenaran.
Sistem pengendalian untuk tutorial ini: Sistem Windows 10, mysql versi 8.0, komputer Dell G3.
Dalam pangkalan data MySQL, jadual kebenaran termasuk jadual pengguna, jadual db, tables_priv table, columns_priv table dan procs_priv table.
1. Jadual kebenaran pengguna
Jadual pengguna ialah jadual kebenaran paling penting dalam MySQL, digunakan untuk merekodkan maklumat akaun yang dibenarkan untuk menyambung ke pelayan. Perlu diingatkan bahawa semua kebenaran yang didayakan dalam jadual pengguna adalah global dan digunakan untuk semua pangkalan data.
Medan dalam jadual pengguna boleh dibahagikan secara kasar kepada 4 kategori, iaitu lajur pengguna, lajur kebenaran, lajur keselamatan dan lajur kawalan sumber.
Lajur pengguna
Lajur pengguna menyimpan maklumat yang pengguna perlu masukkan semasa menyambung ke pangkalan data MySQL. Perlu diingatkan bahawa versi MySQL 5.7 tidak lagi menggunakan Kata Laluan sebagai medan kata laluan, tetapi menukarnya kepada authentication_string.
Lajur kebenaran
Medan dalam lajur kebenaran menentukan kebenaran pengguna dan digunakan untuk menerangkan operasi yang dibenarkan pada data dan pangkalan data dalam skop global.
Kebenaran secara kasar dibahagikan kepada dua kategori, iaitu kebenaran pengurusan lanjutan dan kebenaran biasa:
Kebenaran pengurusan lanjutan terutamanya mengurus pangkalan data, seperti kebenaran untuk menutup perkhidmatan, Keizinan super dan memuatkan pengguna, dsb.;
Kebenaran biasa mengendalikan pangkalan data, seperti kebenaran pertanyaan, kebenaran pengubahsuaian, dsb.
Lajur kebenaran jadual pengguna termasuk Select_priv, Insert_ priv dan medan lain yang berakhir dengan priv Jenis data nilai medan ini ialah ENUM Y dan N: Y mewakili pengguna Terdapat kebenaran yang sepadan, N bermakna pengguna tidak mempunyai kebenaran yang sepadan. Atas sebab keselamatan, nilai lalai untuk medan ini ialah N.
Jika anda ingin mengubah suai kebenaran, anda boleh menggunakan penyata GRANT untuk memberikan beberapa kebenaran kepada pengguna, atau anda boleh menetapkan kebenaran dengan mengemas kini jadual pengguna dengan pernyataan UPDATE.
Lajur keselamatan
Lajur keselamatan digunakan terutamanya untuk menentukan sama ada pengguna boleh log masuk dengan jayanya Lajur keselamatan dalam jadual pengguna adalah seperti yang ditunjukkan dalam jadual berikut:
字段名 | 字段类型 | 是否为空 | 默认值 | 说明 |
---|---|---|---|---|
ssl_type | enum('','ANY','X509','SPECIFIED') | NO | 支持ssl标准加密安全字段 | |
ssl_cipher | blob | NO | 支持ssl标准加密安全字段 | |
x509_issuer | blob | NO | 支持x509标准字段 | |
x509_subject | blob | NO | 支持x509标准字段 | |
plugin | char(64) | NO | mysql_native_password | 引入plugins以进行用户连接时的密码验证,plugin创建外部/代理用户 |
password_expired | enum('N','Y') | NO | N | 密码是否过期 (N 未过期,y 已过期) |
password_last_changed | timestamp | YES | 记录密码最近修改的时间 | |
password_lifetime | smallint(5) unsigned | YES | 设置密码的有效时间,单位为天数 | |
account_locked | enum('N','Y') | NO | N | 用户是否被锁定(Y 锁定,N 未锁定) |
Nota: Walaupun password_expired ialah "Y", pengguna masih boleh menggunakan kata laluan untuk log masuk ke MySQL, tetapi tiada operasi dibenarkan.
Biasanya pengedaran standard tidak menyokong ssl. Pembaca boleh menggunakan SHOW VARIABLE LIKE "have_openssl" untuk menyemak sama ada ia mempunyai fungsi ssl. Jika nilai have_openssl DISABLED, ciri penyulitan ssl tidak disokong.
Lajur kawalan sumber
Medan lajur kawalan sumber digunakan untuk mengehadkan sumber yang digunakan oleh pengguna Lajur kawalan sumber dalam jadual pengguna ditunjukkan dalam Jadual 4.
字段名 | 字段类型 | 是否为空 | 默认值 | 说明 |
---|---|---|---|---|
max_questions | int(11) unsigned | NO | 0 | 规定每小时允许执行查询的操作次数 |
max_updates | int(11) unsigned | NO | 0 | 规定每小时允许执行更新的操作次数 |
max_connections | int(11) unsigned | NO | 0 | 规定每小时允许执行的连接操作次数 |
max_user_connections | int(11) unsigned | NO | 0 | 规定允许同时建立的连接次数 |
Nilai lalai medan di atas ialah 0, yang bermaksud tiada had. Jika bilangan pertanyaan atau sambungan pengguna melebihi had kawalan sumber dalam masa sejam, pengguna akan dikunci dan tidak boleh melakukan operasi yang sepadan di sini sehingga satu jam berikutnya. Nilai medan ini boleh dikemas kini menggunakan pernyataan GRANT.
2. Jadual db
Jadual db biasanya digunakan dan merupakan jadual kebenaran yang sangat penting dalam pangkalan data MySQL pangkalan data. Medan dalam jadual boleh dibahagikan secara kasar kepada dua kategori iaitu lajur pengguna dan lajur kebenaran.
Lajur pengguna
Lajur pengguna jadual db mempunyai 3 medan, iaitu Hos, Pengguna dan Db, yang mengenal pasti kebenaran operasi pengguna untuk menyambung ke pangkalan data tertentu daripada hos tertentu. 3 medan ini Gabungan medan membentuk kunci utama jadual db.
Senarai pengguna jadual db adalah seperti yang ditunjukkan dalam jadual berikut:
字段名 | 字段类型 | 是否为空 | 默认值 | 说明 |
---|---|---|---|---|
Host | char(60) | NO | 无 | 主机名 |
Db | char(64) | NO | 无 | 数据库名 |
User | char(32) | NO | 无 | 用户名 |
Lajur kebenaran
Lajur kebenaran dalam jadual db adalah lebih kurang sama seperti dalam jadual pengguna, kecuali kebenaran dalam jadual pengguna adalah untuk semua pangkalan data, manakala kebenaran dalam jadual db adalah hanya untuk pangkalan data yang ditentukan. Jika anda mahu pengguna mempunyai kebenaran operasi hanya untuk pangkalan data tertentu, anda boleh menetapkan kebenaran yang sepadan dalam jadual pengguna kepada N dahulu, dan kemudian menetapkan kebenaran operasi untuk pangkalan data yang sepadan dalam jadual db.
3. jadual tables_priv
Jadual tables_priv digunakan untuk menetapkan kebenaran pada satu jadual Struktur jadual tables_priv adalah seperti yang ditunjukkan dalam jadual berikut:
字段名 | 字段类型 | 是否为空 | 默认值 | 说明 |
---|---|---|---|---|
Host | char(60) | NO | 无 | 主机 |
Db | char(64) | NO | 无 | 数据库名 |
User | char(32) | NO | 无 | 用户名 |
Table_name | char(64) | NO | 无 | 表名 |
Grantor | char(93) | NO | 无 | 修改该记录的用户 |
Timestamp | timestamp | NO | CURRENT_TIMESTAMP | 修改该记录的时间 |
Table_priv | set('Select','Insert','Update','Delete',' Create','Drop','Grant','References', 'Index','Alter','Create View','Show view','Trigger') |
NO | 无 | 表示对表的操作权限,包括 Select、Insert、Update、Delete、Create、Drop、Grant、References、Index 和 Alter 等 |
Column_priv | set('Select','Insert','Update','References') | NO | 无 | 表示对表中的列的操作权限,包括 Select、Insert、Update 和 References |
4. columns_priv table
columns_priv table digunakan untuk menetapkan kebenaran pada satu lajur data, columns_priv Struktur jadual adalah seperti yang ditunjukkan dalam jadual berikut:
字段名 | 字段类型 | 是否为空 | 默认值 | 说明 |
---|---|---|---|---|
Host | char(60) | NO | 无 | 主机 |
Db | char(64) | NO | 无 | 数据库名 |
User | char(32) | NO | 无 | 用户名 |
Table_name | char(64) | NO | 无 | 表名 |
Column_name | char(64) | NO | 无 | 数据列名称,用来指定对哪些数据列具有操作权限 |
Timestamp | timestamp | NO | CURRENT_TIMESTAMP | 修改该记录的时间 |
Column_priv | set('Select','Insert','Update','References') | NO | 无 | 表示对表中的列的操作权限,包括 Select、Insert、Update 和 References |
5. jadual procs_priv
Jadual procs_priv boleh menetapkan kebenaran pada prosedur tersimpan dan fungsi tersimpan adalah seperti yang ditunjukkan dalam jadual:
字段名 | 字段类型 | 是否为空 | 默认值 | 说明 |
---|---|---|---|---|
Host | char(60) | NO | 无 | 主机名 |
Db | char(64) | NO | 无 | 数据库名 |
User | char(32) | NO | 无 | 用户名 |
Routine_name | char(64) | NO | 无 | 表示存储过程或函数的名称 |
Routine_type | enum('FUNCTION','PROCEDURE') | NO | 无 | 表示存储过程或函数的类型,Routine_type 字段有两个值,分别是 FUNCTION 和 PROCEDURE。FUNCTION 表示这是一个函数;PROCEDURE 表示这是一个 存储过程。 |
Grantor | char(93) | NO | 无 | 插入或修改该记录的用户 |
Proc_priv | set('Execute','Alter Routine','Grant') | NO | 无 | 表示拥有的权限,包括 Execute、Alter Routine、Grant 3种 |
Timestamp | timestamp | NO | CURRENT_TIMESTAMP | 表示记录更新时间 |
Atas ialah kandungan terperinci Apakah jadual kebenaran pangkalan data mysql?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!