- 登錄和退出MySQL
遠(yuǎn)程登陸:
客戶端語法:mysql -u 用戶名 -p 密碼 -h ip地址 -P端口號(hào):如果沒有改端口號(hào)就不用-P指定端口
注:# mysql -h192.168.246.253 -P 3306 -uroot -pqf123
如果報(bào)錯(cuò)進(jìn)入server端服務(wù)器登陸mysql執(zhí)行:
mysql> use mysql
mysql> update user set host = '%' where user = 'root';
mysql> flush privileges;
.# mysql -h192.168.246.253 -P 3306 -uroot -pqf123 -e 'show databases;'
-h 指定主機(jī)名 【默認(rèn)為localhost】
-大P MySQL服務(wù)器端口 【默認(rèn)3306】
-u 指定用戶名 【默認(rèn)root】
-p 指定登錄密碼 【默認(rèn)為空密碼】
-e 接SQL語句,可以寫多條拿;隔開
.# mysql -h192.168.246.253 -P 3306 -uroot -pqf123 -D mysql -e 'select host from user;'
此處 -D mysql為指定登錄的數(shù)據(jù)庫
修改端口rpm安裝:vim /etc/my.cnf
在到【mysql】標(biāo)簽下面添加port=指定端口。重啟服務(wù)
2.創(chuàng)建用戶
方法一:CREATE USER語句創(chuàng)建
mysql> create user tom@'localhost' identified by 'qf@123'; #創(chuàng)建用戶為tom油猫,并設(shè)置密碼废睦。
mysql> FLUSH PRIVILEGES; #更新授權(quán)表
注:
identified by :設(shè)置密碼
在用戶tom@' ' 這里 選擇:
%:允許遠(yuǎn)程登陸。也可以指定某個(gè)ip饮戳,允許某個(gè)ip登陸。也可以是一個(gè)網(wǎng)段。
%:包括所有的主機(jī)温治,不包括本機(jī)(127.0.0.1),但是不包括(localhost)
==客戶端主機(jī) % 所有主機(jī)
192.168.246.% 192.168.246.0網(wǎng)段的所有主機(jī)
192.168.246.252 指定主機(jī)
localhost 指定主機(jī)
方法二: GRANT語句創(chuàng)建 ---授權(quán)戒悠。
mysql> GRANT ALL ON . TO 'user3'@’localhost’ IDENTIFIED BY 'Qf@123';
#權(quán)限 庫名.表名 賬戶名 設(shè)置密碼
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
修改遠(yuǎn)程登陸:
將原來的localhost修改為%或者ip地址
mysql> use mysql
mysql> update user set host = '192.168.246.%' where user = 'user3';
mysql> FLUSH PRIVILEGES;
3.刷新權(quán)限
修改表之后需要刷新權(quán)限
方式1:
mysql > flush privileges;
使用命令授權(quán):grant
也可創(chuàng)建新賬戶(不過后面的版本會(huì)移除這個(gè)功能熬荆,建議使用create user)
語法格式:
grant 權(quán)限列表 on 庫名.表名 to '用戶名'@'客戶端主機(jī)' IDENTIFIED BY 'Qf@123';
==權(quán)限列表 all 所有權(quán)限(不包括授權(quán)權(quán)限)
select,update
select, insert
==數(shù)據(jù)庫.表名 . 所有庫下的所有表 Global level
web.* web庫下的所有表 Database level
web.stu_info web庫下的stu_info表 Table level
給剛才創(chuàng)建的用戶tom授權(quán):
mysql> grant select,insert on . to 'tom'@'localhost';
mysql> FLUSH PRIVILEGES;
4.查看權(quán)限
查看權(quán)限
1.看自己的權(quán)限:
mysql> SHOW GRANTS\G
*************************** 1. row ***************************
Grants for root@%: GRANT ALL PRIVILEGES ON . TO 'root'@'%' WITH GRANT OPTION
2.看別人的權(quán)限:
mysql> SHOW GRANTS FOR tom@'localhost'\G
*************************** 1. row ***************************
Grants for tom@localhost: GRANT SELECT, INSERT ON . TO 'tom'@'localhost'
5.修改密碼
===root修改自己密碼
方法一:
.# mysqladmin -uroot -p'123' password 'new_password' //123為舊密碼
案例:
.# mysqladmin -uroot -p'qf123' password 'qf@123';
方法二:
mysql>SET PASSWORD='new_password';
==root修改其他用戶密碼
mysql> use mysql
mysql> SET PASSWORD FOR user3@'localhost'='new_password'
用戶 = 新密碼
6.刪除用戶
方法一:DROP USER語句刪除
DROP USER 'user3'@'localhost';
方法二:DELETE語句刪除
DELETE FROM mysql.user WHERE user='tom' AND host='localhost';
更新授權(quán)表: FLUSH PRIVILEGES;
7.權(quán)限控制機(jī)制
四張表:user db tables_priv columns_priv
1.用戶認(rèn)證
查看mysql.user表
2.權(quán)限認(rèn)證
以select權(quán)限為例:
1.先看 user表里的select_priv權(quán)限
Y:不會(huì)接著查看其他的表 擁有查看所有庫所有表的權(quán)限
N:接著看db表
2.db表: 存儲(chǔ)了某個(gè)用戶對(duì)一個(gè)數(shù)據(jù)庫的權(quán)限绸狐。
Y:不會(huì)接著查看其他的表 擁有查看所有庫所有表的權(quán)限
N:接著看tables_priv表
3.tables_priv表:可以對(duì)單個(gè)表進(jìn)行權(quán)限設(shè)置
table_priv:如果這個(gè)字段的值里包括select 擁有查看這張表所有字段的權(quán)限卤恳,不會(huì)再接著往下看了
table_priv:如果這個(gè)字段的值里不包括select,接著查看下張表還需要有column_priv字段權(quán)限
4.columns_priv:針對(duì)數(shù)據(jù)列設(shè)置操作權(quán)限.
column_priv:有select寒矿,則只對(duì)某一列有select權(quán)限
沒有則對(duì)所有庫所有表沒有任何權(quán)限
注:其他權(quán)限設(shè)置一樣突琳。