mysql授權(quán)、啟動(dòng)、啟動(dòng)服務(wù)常用命令
一、 四種啟動(dòng)方式:
1、mysqld
啟動(dòng)mysql服務(wù)器: ./mysqld --defaults-file=/etc/my.cnf --user=root 客戶(hù)端連接: mysql --defaults-file=/etc/my.cnf 或 mysql -S /tmp/mysql.sock
2、mysqld_safe
啟動(dòng)mysql服務(wù)器: ./mysqld_safe --defaults-file=/etc/my.cnf --user=root & 客戶(hù)端連接: mysql --defaults-file=/etc/my.cnf 或 mysql -S /tm/mysql.sock
3、mysql.server
cp -v /usr/local/mysql/support-files/mysql.server /etc/init.d/ chkconfig --add mysql.server 啟動(dòng)mysql服務(wù)器:service mysql.server {start|stop|restart|reload|force-reload|status} 客戶(hù)端連接: 同1、2
4、mysqld_multi
mkdir $MYSQL_BASE/data2 cat <<-EOF>> /etc/my.cnf [mysqld_multi] mysqld = /usr/local/mysql/bin/mysqld_safe mysqladmin = /user/local/mysql/bin/mysqladmin user = mysqladmin password = mysqladmin [mysqld3306] port = 3306 socket = /tmp/mysql3306.sock pid-file = /tmp/mysql3306.pid skip-external-locking key_buffer_size = 16M max_allowed_packet = 1M table_open_cache = 64 sort_buffer_size = 512K net_buffer_length = 8K read_buffer_size = 256K read_rnd_buffer_size = 512K myisam_sort_buffer_size = 8M basedir = /usr/local/mysql datadir = /usr/local/mysql/data [mysqld3307] port = 3307 socket = /tmp/mysql3307.sock pid-file = /tmp/mysql3307.pid skip-external-locking key_buffer_size = 16M max_allowed_packet = 1M table_open_cache = 64 sort_buffer_size = 512K net_buffer_length = 8K read_buffer_size = 256K read_rnd_buffer_size = 512K myisam_sort_buffer_size = 8M basedir = /usr/local/mysql datadir = /usr/local/mysql/data2 EOF #mysql -S /tmp/mysql3306.sock mysql>GRANT SHUTDOWN ON *.* TO 'mysqladmin'@'localhost' identified by 'mysqladmin' with grant option; #mysql -S /tmp/mysql3307.sock mysql>GRANT SHUTDOWN ON *.* TO 'mysqladmin'@'localhost' identified by 'mysqladmin' with grant option; 啟動(dòng)mysql服務(wù)器:./mysqld_multi --defaults-file=/etc/my.cnf start 3306-3307 關(guān)閉mysql服務(wù)器:mysqladmin shutdown
二、 啟動(dòng)和關(guān)閉mysql服務(wù)
1. windows下:
啟動(dòng): mysqld --console 或 net start mysql 關(guān)閉: mysqladmin -u root shutdown 或 net stop mysql
linux下:
啟動(dòng): service mysql start 停止: service mysql stop 重啟服務(wù): service mysql restart
三、創(chuàng)建用戶(hù)分配權(quán)限
1. 新建用戶(hù): 創(chuàng)建一個(gè)名為: buff,密碼為: buff的用戶(hù)
// root 用戶(hù)登陸 MySQL mysql -uroot -p Enter password: // 新建用戶(hù) mysql>insert into mysql.user(Host,User,Password) values("localhost","buff",password("buff")); // 刷新系統(tǒng)權(quán)限表 mysql>flush privileges;
登錄測(cè)試
mysql>exit // 用戶(hù) buff 登陸 MySQL mysql -ubuff -p Enter password: mysql> // 說(shuō)明新建的用戶(hù)buff登錄成功
用戶(hù)授權(quán)
// root 用戶(hù)登陸 MySQL mysql -uroot -p Enter password: // 為用戶(hù) buff 創(chuàng)建一個(gè)數(shù)據(jù)庫(kù) bluebuff mysql>create database bluebuff; // 授權(quán)用戶(hù) buff 擁有數(shù)據(jù)庫(kù) bluebuff 的所有權(quán)限 mysql>grant all privileges on bluebuff.* to buff@localhost identified by 'buff'; mysql>flush privileges;
登錄測(cè)試
// 用戶(hù) buff 登陸數(shù)據(jù)庫(kù) mysql -ubuff -p Enter privileges: // 顯示數(shù)據(jù)庫(kù) mysql>show databases;
結(jié)果如下圖所示,說(shuō)明為用戶(hù) buff 授權(quán)成功
5、 修改用戶(hù) buff 的密碼
// root 用戶(hù)登陸 MySQL mysql -uroot -p Enter password: // 修改用戶(hù) buff 的密碼 mysql>update table mysql.user set password=password('buffer') where User='buff' and Host='localhost'; mysql>flush privileges;
6、 刪除用戶(hù)
// root 用戶(hù)登陸 MySQL mysql -uroot -p Enter password: // 刪除用戶(hù) buff mysql>delete from mysql.user where User = 'buff' and Host = 'localhost'; mysql>flush privileges;
7、 刪除數(shù)據(jù)庫(kù)
mysql>drop database bluebuff;
四、 查看用戶(hù)授予的權(quán)限
在mysql中,授予用戶(hù)的權(quán)限可能分全局層級(jí)權(quán)限、數(shù)據(jù)庫(kù)層級(jí)權(quán)限、表層級(jí)別權(quán)限、列層級(jí)別權(quán)限、子程序?qū)蛹?jí)權(quán)限
1. 全局層級(jí):
全局權(quán)限適用于一個(gè)給定服務(wù)器中的所有數(shù)據(jù)庫(kù)。這些權(quán)限存儲(chǔ)在mysql.user表中。GRANT ALL ON *.*和REVOKE ALL ON *.*只授予和撤銷(xiāo)全局權(quán)限。 例:a. 創(chuàng)建一個(gè)測(cè)試賬號(hào)test,授予全局層級(jí)的權(quán)限 mysql> grant select,insert on *.* to test@'%' identified by 'test'; mysql> flush privileges; b. 查詢(xún)授予test的權(quán)限 show grants for test; select * from mysql.user where user='test'\G;
2 、 數(shù)據(jù)庫(kù)層級(jí):
數(shù)據(jù)庫(kù)權(quán)限適用于一個(gè)給定數(shù)據(jù)庫(kù)中的所有目標(biāo)。這些權(quán)限存儲(chǔ)在mysql.db和mysql.host表中。GRANT ALL ON db_name.*和REVOKE ALL ON db_name.*只授予和撤銷(xiāo)數(shù)據(jù)庫(kù)權(quán)限 例:a. 創(chuàng)建一個(gè)測(cè)試賬號(hào)test,授予數(shù)據(jù)庫(kù)層級(jí)的權(quán)限 drop user test; grant select,insert,update,delete on MyDB.* to test@'%' identified by 'test'; b. 查詢(xún)授予test的權(quán)限 select * from mysql.user where user='test'\G; --可以看到無(wú)任何授權(quán) select * from mysql.db where user='test'\G; show grants for test;
3、 表層級(jí):
表權(quán)限適用于一個(gè)給定表中的所有列。這些權(quán)限存儲(chǔ)在mysql.tables_priv表中。GRANT ALL ON db_name.tbl_name和REVOKE ALL ON db_name.tbl_name只授予和撤銷(xiāo)表權(quán)限。 例:a. 創(chuàng)建一個(gè)測(cè)試賬號(hào)test,授予表層級(jí)的權(quán)限 drop user test; flush privileges; grant all on MyDB.kkk to test@'%' identified by 'test'; b. 查詢(xún)授予test的權(quán)限 show grants for test; select * from mysql.tables_priv\G;
4、 列層級(jí):
列權(quán)限適用于一個(gè)給定表中的單一列。這些權(quán)限存儲(chǔ)在mysql.columns_priv表中。當(dāng)使用REVOKE時(shí),您必須指定與被授權(quán)列相同的列。 例:a. 創(chuàng)建一個(gè)測(cè)試賬號(hào)test,授予列層級(jí)的權(quán)限 drop user test; flush privileges; grant select (id, col1) on MyDB.TEST1 to test@'%' identified by 'test'; flush privileges; b. 查詢(xún)授予test的權(quán)限 select * from mysql.columns_priv; show grants for test;
5、 子程序?qū)蛹?jí):
CREATE ROUTINE, ALTER ROUTINE, EXECUTE和GRANT權(quán)限適用于已存儲(chǔ)的子程序。這些權(quán)限可以被授予為全局層級(jí)和數(shù)據(jù)庫(kù)層級(jí)。而且,除了CREATE ROUTINE外,這些權(quán)限可以被授予為子程序?qū)蛹?jí),并存儲(chǔ)在mysql.procs_priv表中。 例:a. 創(chuàng)建一個(gè)測(cè)試賬號(hào)test,授予子程序?qū)蛹?jí)的權(quán)限 DROP PROCEDURE IF EXISTS PRC_TEST; DELIMITER // CREATE PROCEDURE PRC_TEST() -> BEGIN -> SELECT * FROM kkk; -> END // DELIMITER ; grant execute on MyDB.PRC_TEST to test@'%' identified by 'test'; flush privileges; b. 查詢(xún)授予test的權(quán)限 show grants for test; select * from mysql.procs_priv where User='test';
總結(jié):
1. 如果需要查看用戶(hù)被授予的權(quán)限,就需要從這五個(gè)層級(jí)來(lái)查看被授予的權(quán)限。從上到下或從小到上,逐一檢查各個(gè)層級(jí)被授予的權(quán)限。
2. grant create routine, alter routine, select, create, insert, update, delete, execute on ….
3. 如果客戶(hù)端無(wú)法連接到服務(wù)器,則查看user表中的host項(xiàng)是否為'%',并且已經(jīng)授權(quán)了
相關(guān)文章
MySQL隱式類(lèi)型轉(zhuǎn)換導(dǎo)致索引失效的解決
本文主要介紹了MySQL隱式類(lèi)型轉(zhuǎn)換導(dǎo)致索引失效的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08Mysql外鍵設(shè)置中的CASCADE、NO ACTION、RESTRICT、SET NULL
本文主要介紹了Mysql外鍵設(shè)置中的CASCADE、NO ACTION、RESTRICT、SET NULL,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07MySQL的分區(qū)表使用場(chǎng)景及示例小結(jié)
MySQL的分區(qū)表功能在某些場(chǎng)景下可以顯著提高查詢(xún)效率,本文主要介紹了MySQL的分區(qū)表使用場(chǎng)景及示例小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下2024-06-06k8s搭建mysql集群實(shí)現(xiàn)主從復(fù)制的方法步驟
本文是基于已有k8s環(huán)境下,介紹在k8s環(huán)境中部署mysql主從集群的實(shí)現(xiàn)步驟,對(duì)mysql學(xué)習(xí)有一定的幫助,感興趣的可以學(xué)習(xí)一下2023-01-01MySQL部署時(shí)提示Table mysql.plugin doesn’t exist的解決方法
這篇文章主要介紹了MySQL部署時(shí)Table mysql.plugin doesn't exist的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06MySQL創(chuàng)建和刪除數(shù)據(jù)表的命令及語(yǔ)法詳解
這篇文章主要介紹了MySQL創(chuàng)建和刪除數(shù)據(jù)表的命令及語(yǔ)法,是MySQL入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-11-11