你們或許都聽過程序員刪庫跑路,可想而知,若是對用戶開放太多的數據庫操做權限,操做不當,可能會形成意想不到的損失,經過本篇學習,能夠熟練掌握mysql用戶權限的控制。固然啦,數據被刪掉,可使用技術手段(binlog)恢復回去的,過幾天更新~html
點我直達mysql
修改mysql庫裏邊的user表:
update mysql.user set host='localhost' where user='root';
刷新權限:
flush privileges;
編輯my.cnf
vim /usr/local/mysql/my.cnf
==================
[client]
default-character-set=utf8
[mysqld]
character_set_server=utf8
datadir=/usr/local/mysql/data
port = 3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
symbolic-links=0
max_connections=400
innodb_file_per_table=1
#表名大小寫不明感,敏感爲
lower_case_table_names=1
#跳過權限表,添加該命令
skip-grant-tables
service mysql restart
mysql -uroot -p
直接回車不用輸入密碼!!!!!!!!
而後使用下面3種修改密碼之一便可
連到數據庫中修改密碼程序員
格式:
set password for 用戶名@ip =password('密碼');
alter user '用戶'@'ip' identified by '密碼';
刷新權限:
flush privileges;
示例
set password for root@127.0.0.1 = password('root');
格式:
./mysqladmin -u用戶 -p舊密碼 password 新密碼
格式:
select * from mysql.user where user='root' \G;
update mysql.user set authentication_string=password('123456') where user='root';
刷新權限:
flush privileges;
語法:
create user '用戶名'@'ip' identified by '密碼';
用戶名:建立的帳戶
ip:指定該用戶在哪一個主機上能夠登陸,若是是本地用戶可用localhost,若是想讓該用戶能夠在任意遠程主機登陸,可使用通配符:%
密碼:該用戶的登陸密碼,密碼能夠爲空,若是爲空,則該用戶能夠不須要密碼登陸服務器
查看權限:
show grants for '用戶名'@'ip';
查看用戶權限:
select * from mysql.user where user='用戶' \G;
mysql> select * from mysql.user where user='ybchen' \G;
*************************** 1. row ***************************
Host: %
User: ybchen
Select_priv: N
Insert_priv: N
Update_priv: N
Delete_priv: N
Create_priv: N
Drop_priv: N
Reload_priv: N
Shutdown_priv: N
Process_priv: N
File_priv: N
Grant_priv: N
References_priv: N
Index_priv: N
Alter_priv: N
Show_db_priv: N
Super_priv: N
Create_tmp_table_priv: N
Lock_tables_priv: N
Execute_priv: N
Repl_slave_priv: N
Repl_client_priv: N
Create_view_priv: N
Show_view_priv: N
Create_routine_priv: N
Alter_routine_priv: N
Create_user_priv: N
Event_priv: N
Trigger_priv: N
Create_tablespace_priv: N
ssl_type:
ssl_cipher:
x509_issuer:
x509_subject:
max_questions: 0
max_updates: 0
max_connections: 0
max_user_connections: 0
plugin: mysql_native_password
authentication_string: *D2EDE838B7E0B05A2C599D3E1F5821D0ADC4F26E
password_expired: N
password_last_changed: 2020-11-19 23:26:12
password_lifetime: NULL
account_locked: N
1 row in set (0.00 sec)
適用於只能在公司內網環境下開發程序,外網登陸不上,限制:172.20網段登陸sql
create user 'ybchen'@'172.20.%.%' identified by '123456';
語法:
drop user '用戶'@'ip';
語法:
delete from mysql.user where user='用戶';
語法: grant 權限1,權限2... on 數據庫 to '用戶' grant 權限1,權限2... on 數據庫 to '用戶'@'ip' identified by '密碼'
對cyb用戶授予全部庫全部表全部權限數據庫
all privileges:表明全部權限 *.*:表明全部庫全部表 grant all privileges on *.* to 'cyb';
授予cyb2用戶,db1庫全部權限vim
語法:
建立用戶
create user 'cyb2'@'%' identified by 'cyb2';
授予cyb2用戶,db1庫的全部權限
grant all privileges on db1.* to 'cyb2'@'%' identified by 'cyb2';
刷新權限
flush privileges;
授予cyb3用戶,db1庫student的查詢權限(只有增刪改查權限,沒有新建表、刪除表權限)服務器
語法:
建立用戶
create user 'cyb3'@'%' identified by 'cyb3';
授予cyb3用戶,db1庫student,增刪改查權限
grant insert,select,update,delete on db1.student to 'cyb3'@'%' identified by 'cyb3';
刷新權限
flush privileges;
語法:
revoke 權限1,權限2... on 數據庫對象 from '用戶'@'ip'
revoke all privileges on *.* from 'cyb'@'%';
flush privileges;
這種移除權限,可是用戶仍是能夠正常登錄的,若是讓用戶登錄都登不上,須要將mysql.user的記錄刪除!ide