Centos系統下解除安裝、安裝MySQL及使用者的建立、授權和使用(詳細。。。。)
由於經常使用linux系統,並且大資料環境搭建中經常會使用到mysql,不像windows系統下的安裝,今天有點空寫一篇,下面我給大家演示一遍。
主要有三部分內容:
1、MySQL的解除安裝
2、MySQL的安裝
3、MySQL使用者的授權和使用者建立、刪除
一、MySQL的解除安裝(如果是僅僅安裝MySQL的使用者可以跳過這一部分)
a)檢視系統中以rpm包安裝的mysql:
[[email protected] ~]$ rpm -qa | grep -i mysql
MySQL-client-5.5.59-1.el7.x86_64
MySQL-server-5.5 .59-1.el7.x86_64
b)解除安裝mysql
[[email protected] ~]$ sudo rpm -e MySQL-client-5.5.59-1.el7.x86_64
[[email protected] ~]$ sudo rpm -e MySQL-server-5.5.59-1.el7.x86_64
現在可以使用rpm -qa | grep -i mysql來檢視系統是否還有rpm安裝的mysql包
c)關閉mysql服務
[[email protected] ~]$ systemctl stop mysql
d)刪除分散mysql資料夾
whereis mysql 和sudo find / -name mysql
當然每個人的情況都不一樣,但刪除的方式是一樣的、、哈哈哈 可以使用rm -rf 刪除上面查詢的mysql資料夾
清空相關mysql的所有目錄以及檔案,可以使用我的方式刪除
sudo rm -rf /var/lib/mysql /usr/lib64/mysql /var/lib/mysql/mysql /usr/lib64/mysql
sudo rm -rf /usr/lib/mysql /usr/share/mysql /usr/my.cnf
通過以上幾步,mysql應該已經完全解除安裝乾淨了
二、MySQL的安裝
a) 下載mysql rpm安裝包
https://dev.mysql.com/downloads/mysql/5.7.html#downloads
MySQL-server-5.5.59-1.el7.x86_64.rpm
MySQL-client-5.5.59-1.el7.x86_64.rpm
b) 安裝libaio 需要libaio的依賴
sudo yum install libaio
c)rpm安裝
sudo rpm -ivh MySQL-server-5.5.59-1.el7.x86_64.rpm
sudo rpm -ivh MySQL-client-5.5.59-1.el7.x86_64.rpm
d)執行和配置mysql
systemctl start mysql 啟動mysql服務
安裝完mysql-server 會提示可以執行mysql_secure_installation。執行mysql_secure_installation會執行幾個設定:
a)為root使用者設定密碼
b)刪除匿名賬號
c)取消root使用者遠端登入
d)刪除test庫和對test庫的訪問許可權
e)重新整理授權表使修改生效
通過這幾項的設定能夠提高mysql庫的安全。建議生產環境中mysql安裝這完成後一定要執行一次mysql_secure_installation,詳細步驟請參看下面的命令:
複製程式碼 程式碼如下:
[[email protected] ~]# mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MySQL to secure it, we'll need the current
password for the root user. If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):<–初次執行直接回車
OK, successfully used password, moving on…
Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.
Set root password? [Y/n] <– 是否設定root使用者密碼,輸入y並回車或直接回車
New password: <– 設定root使用者的密碼
Re-enter new password: <– 再輸入一次你設定的密碼
Password updated successfully!
Reloading privilege tables..
… Success!
By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] <– 是否刪除匿名使用者,生產環境建議刪除,所以直接回車
… Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] <–是否禁止root遠端登入,根據自己的需求選擇Y/n並回車,建議禁止
… Success!
By default, MySQL comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] <– 是否刪除test資料庫,直接回車
- Dropping test database…
… Success!
- Removing privileges on test database…
… Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] <– 是否重新載入許可權表,直接回車
… Success!
Cleaning up…
All done! If you've completed all of the above steps, your MySQL
installation should now be secure.
Thanks for using MySQL!
e) 啟動MySQL
mysql -uroot -p
三、MySQL使用者的授權和使用者建立、刪除
預設情況下制定在本地使用root的賬號密碼進行連線,遠端連線不了,需要配置許可權
#(執行下面的語句 *.*:所有庫下的所有表 %:任何IP地址或主機都可以連線)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123' WITH GRANT OPTION;
FLUSH PRIVILEGES; //重新整理許可權
此刻,就可以在其他地方遠端連線mysql資料庫了。由於我們經常會建立一個新使用者來使用資料庫
1) 檢視所有使用者的許可權列表
mysql> show grants;
2)檢視指定使用者的許可權資訊
mysql> show grants for 'root'@'localhost';
mysql> show grants for 'root'@'%';
3)建立新使用者(需要在root的方式登陸下建立)
命令:
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
說明:
- username:你將建立的使用者名稱
- host:指定該使用者在哪個主機上可以登陸,如果是本地使用者可用localhost,如果想讓該使用者可以從任意遠端主機登陸,可以使用萬用字元
%
- password:該使用者的登陸密碼,密碼可以為空,如果為空則該使用者可以不需要密碼登陸伺服器
例子:
CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456';
CREATE USER 'pig'@'192.168.1.101_' IDENDIFIED BY '123456';
CREATE USER 'pig'@'%' IDENTIFIED BY '123456';
CREATE USER 'pig'@'%' IDENTIFIED BY '';
CREATE USER 'pig'@'%';
4)授權(需要在root的方式登陸下建立)
命令:
GRANT privileges ON databasename.tablename TO 'username'@'host'
說明:
- privileges:使用者的操作許可權,如
SELECT
,INSERT
,UPDATE
等,如果要授予所的許可權則使用ALL
- databasename:資料庫名
- tablename:表名,如果要授予該使用者對所有資料庫和表的相應操作許可權則可用
*
表示,如*.*
例子:
GRANT SELECT, INSERT ON test.user TO 'pig'@'%';
GRANT ALL ON *.* TO 'pig'@'%';
GRANT ALL ON maindataplus.* TO 'pig'@'%';
注意:
用以上命令授權的使用者不能給其它使用者授權,如果想讓該使用者可以授權,用以下命令:
GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;
5)設定與更改使用者密碼
命令:
SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');
如果是當前登陸使用者用:
SET PASSWORD = PASSWORD("newpassword");
例子:
SET PASSWORD FOR 'pig'@'%' = PASSWORD("123456");
6)撤銷使用者許可權
命令:
REVOKE privilege ON databasename.tablename FROM 'username'@'host';
說明:
privilege, databasename, tablename:同授權部分
例子:
REVOKE SELECT ON *.* FROM 'pig'@'%';
注意:
假如你在給使用者'pig'@'%'
授權的時候是這樣的(或類似的):GRANT SELECT ON test.user TO 'pig'@'%'
,則在使用REVOKE SELECT ON *.* FROM 'pig'@'%';
命令並不能撤銷該使用者對test資料庫中user表的SELECT
操作。相反,如果授權使用的是GRANT SELECT ON *.* TO 'pig'@'%';
則REVOKE SELECT ON test.user FROM 'pig'@'%';
命令也不能撤銷該使用者對test資料庫中user表的Select
許可權。
具體資訊可以用命令SHOW GRANTS FOR 'pig'@'%';
檢視。
7)刪除使用者
命令:
DROP USER 'username'@'host';