MySQL中权限管理的详图介绍
权限管理
MySQL权限系统通过下面两个阶段进行认证:
对连接的用户进行身份认证,合法的用户通过认证,不合法的用户拒绝连接。
对通过认证的合法用户授予相应的权限,用户可以通过再这些权限范围内对数据库做相应的操作。
在权限存取过程中,主要涉及到mysql数据库下user表和db表。user表的数据结构如下:
db表数据结构如下:
表的说明:其中包含用户列、权限列、安全列和资源控制列。用的最频繁的是用户列和权限列,权限分为普通权限和管理权限。普通权限用户数据库的操作如select_priv、insert_priv等。管理权限主要用来对数据库进行管理的操作,比如process_priv、super_priv等。
用户进行连接的时候,权限表的存取过程:先从user表中的host、user和password这三个字段中判断连接的ip、用户名以及密码是否存在表中,如果存在,则通过验证,否则拒绝连接。
通过身份验证之后,按照以下权限表的顺序得到数据库权限:user->db->tables->priv->columns_priv。全局权限,覆盖局部权限。比如一个用户在user表中拥有选择权限,那么他将对所有数据中的所有表所有的列都有选择权限。
权限查找详细描述:当用户通过权限认证之后,进行权限分配时候,按照user->db->tables_priv->columns_priv的顺序进行权限分配,即先检查权限表user,如果user表中对应的权限为Y,此时用户对应所有的数据库权限为Y,将不再检查db、tables_priv、columns_priv;如果为N,则到db表中进行查找用户对于具体数据库权限,如果得到db中的Y权限,则不在查找,否则检查tables_priv,看该数据库对应的具体表权限,如果为Y,则不在查找,否则检查columns_priv表,查看对应的具体列权限。这一点对于我们授予用户权限很重要。
账号管理
创建用户
创建用户,可以使用grant语法创建或者直接操作user表。
方法一:
直接操作use表
insert into user(Host
,User
,Password
) values(“127.0.0.1”,”test”,password(“51testit”));
方法二:
格式 CREATE USER ‘username’@’host’ IDENTIFIED BY ‘password’;
eg:CREATE USER ‘test’@’127.0.0.1’ IDENTIFIED BY ‘51testit’;
创建之后,登录如下:
MySQL加密方式: MYSQL323加密中生成的是16位字符串,而在MySQLSHA1中生存的是41位字符串,其中是不加入实际的密码运算中,通过观察在很多用户中都携带了”“,在实际破解过程中去掉”*”,也就是说MySQLSHA1加密的密码的实际位数是40位。
Host字段描述
Host值可以是主机名或者IP号,或者locahost代表本地主机。
可以再host列值前面使用通配符”%”和”_”,”%”代表匹配任何主机,空的Host值等于”%”。如”%.myweb.com”,匹配所有mysql.com域的所有主机。案例如下:
Host | User | 解析 |
---|---|---|
myweb.wang | pps | pps,从myweb.wang连接 |
% | pps | pps,从任何主机连接 |
% | ” | 任何用户,从任何主机连接 |
122.164.35.127 | pps | pps,从122.164.35.127连接 |
122.164.35.% | pps | pps,从122.164.35.类型子网的任何主机连接 |
查看用户权限
对于上面创建的test,我没有进行任何授权操作,当我使用test用户去操作数据库时候,发现:
没有数据库操作权限,怎样才能查看用户拥有的权限呢?
查看权限
方法一:
show grants for test@127.0.0.1;
方法二:
查看user表中记录的权限。
select * from mysql.user where user=’test’ and host=’127.0.0.1’ \G;
授予权限
语法格式如下:
grant [privilege1|privilege2|all privileges] on dbName|.tableName 或 to user@hostName ;
当给test用户授予xxpt选择权限时候:
grant select On xxpt.* to test.127.0.0.1;
db表发生了变化,新增加一条记录。但是user表并没有改变。如下:
此时,可以使用test用户进行数据查询操作,但是不能进行增、删、改。于是授予其关于xxpt数据库的所有权限。
grant all privileges on xxpt.* to test@127.0.0.1;
用户test权限如下:
此时可以更新数据
管理权限sueper、process、file授予
grant sueper,process,file On . to ‘test’@’127.0.0.1’;
语句中on后面只能是.
备注:usage 权限用于登录,不能进行任何操作。
删除权限
使用grant新增权限,使用revoke进行权限回收。当然回收权限,也可以直接对user、db、tables_priv和columns_priv表进行操作。但是usage权限是没法收回的。
如回收test对所有数据库的读写权限:
revoke select ,insert on . from test@127.0.0.1;
修改密码
1.使用mysqladmin
2.使用set password for test@127.0.0.1 =password(‘isayhello’);
3.通过grant usage
grant usage on . to ‘test’@’127.0.0.1’ identified by ‘isayhello’;
4.直接修改user表
update user set Password=password(“newpassword”) where ***;
补充mysql中权限
权限 |
权限级别 |
权限说明 |
CREATE |
数据库、表或索引 |
创建数据库、表或索引权限 |
DROP |
数据库或表 |
删除数据库或表权限 |
GRANT OPTION |
数据库、表或保存的程序 |
赋予权限选项 |
REFERENCES |
数据库或表 |
|
ALTER |
表 |
更改表,比如添加字段、索引等 |
DELETE |
表 |
删除数据权限 |
INDEX |
表 |
索引权限 |
INSERT |
表 |
插入权限 |
SELECT |
表 |
查询权限 |
UPDATE |
表 |
更新权限 |
CREATE VIEW |
视图 |
创建视图权限 |
SHOW VIEW |
视图 |
查看视图权限 |
ALTER ROUTINE |
存储过程 |
更改存储过程权限 |
CREATE ROUTINE |
存储过程 |
创建存储过程权限 |
EXECUTE |
存储过程 |
执行存储过程权限 |
FILE |
服务器主机上的文件访问 |
文件访问权限 |
CREATE TEMPORARY TABLES |
服务器管理 |
创建临时表权限 |
LOCK TABLES |
服务器管理 |
锁表权限 |
CREATE USER |
服务器管理 |
创建用户权限 |
PROCESS |
服务器管理 |
查看进程权限 |
RELOAD |
服务器管理 |
执行flush-hosts, flush-logs, flush-privileges, flush-status, flush-tables, flush-threads, refresh, reload等命令的权限 |
REPLICATION CLIENT |
服务器管理 |
复制权限 |
REPLICATION SLAVE |
服务器管理 |
复制权限 |
SHOW DATABASES |
服务器管理 |
查看数据库权限 |
SHUTDOWN |
服务器管理 |
关闭数据库权限 |
SUPER |
服务器管理 |
执行kill线程权限 |
MYSQL的权限如何分布,就是针对表可以设置什么权限,针对列可以设置什么权限等等,这个可以从官方文档中的一个表来说明:
权限分布 |
可能的设置的权限 |
表权限 |
‘Select’, ‘Insert’, ‘Update’, ‘Delete’, ‘Create’, ‘Drop’, ‘Grant’, ‘References’, ‘Index’, ‘Alter’ |
列权限 |
‘Select’, ‘Insert’, ‘Update’, ‘References’ |
过程权限 |
‘Execute’, ‘Alter Routine’, ‘Grant’ |
以上就是MySQL中权限管理的详图介绍的内容,更多相关内容请关注PHP中文网(www.php.cn)!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



MySQL sesuai untuk pemula kerana mudah dipasang, kuat dan mudah untuk menguruskan data. 1. Pemasangan dan konfigurasi mudah, sesuai untuk pelbagai sistem operasi. 2. Menyokong operasi asas seperti membuat pangkalan data dan jadual, memasukkan, menanyakan, mengemas kini dan memadam data. 3. Menyediakan fungsi lanjutan seperti menyertai operasi dan subqueries. 4. Prestasi boleh ditingkatkan melalui pengindeksan, pengoptimuman pertanyaan dan pembahagian jadual. 5. Sokongan sokongan, pemulihan dan langkah keselamatan untuk memastikan keselamatan data dan konsistensi.

MySQL adalah sistem pengurusan pangkalan data sumber terbuka. 1) Buat Pangkalan Data dan Jadual: Gunakan perintah Createdatabase dan Createtable. 2) Operasi Asas: Masukkan, Kemas kini, Padam dan Pilih. 3) Operasi lanjutan: Sertai, subquery dan pemprosesan transaksi. 4) Kemahiran Debugging: Semak sintaks, jenis data dan keizinan. 5) Cadangan Pengoptimuman: Gunakan indeks, elakkan pilih* dan gunakan transaksi.

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".

Buat pangkalan data menggunakan Navicat Premium: Sambungkan ke pelayan pangkalan data dan masukkan parameter sambungan. Klik kanan pada pelayan dan pilih Buat Pangkalan Data. Masukkan nama pangkalan data baru dan set aksara yang ditentukan dan pengumpulan. Sambung ke pangkalan data baru dan buat jadual dalam penyemak imbas objek. Klik kanan di atas meja dan pilih masukkan data untuk memasukkan data.

MySQL dan SQL adalah kemahiran penting untuk pemaju. 1.MYSQL adalah sistem pengurusan pangkalan data sumber terbuka, dan SQL adalah bahasa standard yang digunakan untuk mengurus dan mengendalikan pangkalan data. 2.MYSQL menyokong pelbagai enjin penyimpanan melalui penyimpanan data yang cekap dan fungsi pengambilan semula, dan SQL melengkapkan operasi data yang kompleks melalui pernyataan mudah. 3. Contoh penggunaan termasuk pertanyaan asas dan pertanyaan lanjutan, seperti penapisan dan penyortiran mengikut keadaan. 4. Kesilapan umum termasuk kesilapan sintaks dan isu -isu prestasi, yang boleh dioptimumkan dengan memeriksa penyataan SQL dan menggunakan perintah menjelaskan. 5. Teknik pengoptimuman prestasi termasuk menggunakan indeks, mengelakkan pengimbasan jadual penuh, mengoptimumkan operasi menyertai dan meningkatkan kebolehbacaan kod.

Anda boleh membuat sambungan MySQL baru di Navicat dengan mengikuti langkah -langkah: Buka aplikasi dan pilih Sambungan Baru (Ctrl N). Pilih "MySQL" sebagai jenis sambungan. Masukkan nama host/alamat IP, port, nama pengguna, dan kata laluan. (Pilihan) Konfigurasikan pilihan lanjutan. Simpan sambungan dan masukkan nama sambungan.

Memulihkan baris yang dipadam secara langsung dari pangkalan data biasanya mustahil melainkan ada mekanisme sandaran atau transaksi. Titik Utama: Rollback Transaksi: Jalankan balik balik sebelum urus niaga komited untuk memulihkan data. Sandaran: Sandaran biasa pangkalan data boleh digunakan untuk memulihkan data dengan cepat. Snapshot Pangkalan Data: Anda boleh membuat salinan bacaan pangkalan data dan memulihkan data selepas data dipadam secara tidak sengaja. Gunakan Pernyataan Padam dengan berhati -hati: Periksa syarat -syarat dengan teliti untuk mengelakkan data yang tidak sengaja memadamkan. Gunakan klausa WHERE: Secara jelas menentukan data yang akan dipadam. Gunakan Persekitaran Ujian: Ujian Sebelum Melaksanakan Operasi Padam.

Langkah -langkah untuk melaksanakan SQL di Navicat: Sambungkan ke pangkalan data. Buat tetingkap editor SQL. Tulis pertanyaan SQL atau skrip. Klik butang Run untuk melaksanakan pertanyaan atau skrip. Lihat hasilnya (jika pertanyaan dilaksanakan).
