部份內容轉載於html
https://www.linuxidc.com/Linux/2016-09/135288.htmmysql
https://www.cnblogs.com/rays-/p/8081798.htmllinux
在CentOS7安裝mysql5.7sql
yum源 rmp包下載地址docker
https://dev.mysql.com/downloads/repo/yum/數據庫
下載mysql源安全
wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
安裝mysql源app
yum localinstall mysql57-community-release-el7-8.noarch.rpm
檢查mysql源url
yum repolist enabled | grep "mysql.*-community.*"
成功則有下圖spa
須要更換版本能夠在 /etc/yum.repos.d/mysql-community.repo切換,把須要的版本enabled=1,原來的修改爲0
安裝mysql
yum install mysql-community-server
守護進程操做
啓動mysql systemctl start mysqld 關閉mysql systemctl stop mysqld 開機自啓動 systemctl enable mysqld 關閉自啓動 systemctl disable mysqld
檢查端口是否開啓mysql,3306是mysql默認端口
登入mysql
mysql隨機生成一個密碼,在/var/log/mysqld.log
grep 'temporary password' /var/log/mysqld.log
後面那串隨機的字符串就是密碼
在終端輸入
mysql -uroot -p
而後輸入密碼,進入mysql
修改密碼,格式爲 set password for 'root@localhost'=password('你要需改的密碼');
若是出現如下提示,是由於mysql默認密碼檢查策略要求密碼必須包含:大小寫字母、數字和特殊符號,而且長度不能少於8位
咱們能夠把這個密碼檢查策略關閉,找到mysql的配置文件 /etc/my.conf,添加一下兩行
[mysqld] validate_password=off
而後重啓mysql服務
systemctl restart mysqld
進入mysql在修改密碼
經常使用的SQL語句
數據庫查詢語言 專門用於查詢數據 表明指令爲select /show
數據操做語言 專門用於寫入數據 表明指令instert update delete
事務處理語言 專門用於事務安全處理 表明指令 transaction
數據控制語言 專門用於權限管理 表明指令 grant / revoke
數據定義語言 專門用於結構管理 表明指令creat / drop
數據庫操做
show databases #查看所有數據庫
show databases like ‘匹配模式’; #查看指定數據庫 匹配模式: _: 匹配當前位置單個字符、 %:匹配指定位置多個字符
create database 數據庫名 #建立數據庫
drop database 數據庫名 #刪除數據庫
use 數據庫名字; #選擇數據庫
表操做
use 數據庫名稱 #先選擇進入的數據庫
show tables #查看當前數據庫的所有表
create table 表名(字段名1 字段類型2 [ 字段名2 類型2 ] ) #建立表
drop table 表名 #刪除表
alter table 表名 add 字段名 字段類型 #增長字段
設置遠程用戶訪問,進入mysql的命令行且須要root權限, (其中% 表示全部主機均可以訪問)
GRANT ALL PRIVILEGES ON *.* TO '用戶名'@'%' IDENTIFIED BY '密碼' WITH GRANT OPTION;
FLUSH PRIVILEGES 刷新權限設置
建立用戶
CREATE USER '用戶名'@'host' IDENTIFIED BY '密碼';
host能夠是本地(localhost),也能夠是任意主機(%),或者指定主機
刪除用戶
DROP USER '用戶名'@'host';
查看所有用戶
select user,host from mysql.user
修改用戶名,將root修改爲admin
update mysql.user set user='admin' where user='root';
用戶受權,須要刷新權限才能生效
GRANT 權限操做 ON 數據庫名.表名 TO '用戶名'@'host'
FLUSH PRIVILEGES
命令操做能夠是 select create update delete等,所有權限能夠輸入ALL,所有的數據庫的所有表名能夠表示 *.*
例如 GRANT SELECT ON test_db.* TO 'test'@'localhost'; 只能本地登入的test用戶擁有讀取test_db數據庫下面的全部表
刪除權限
REVOKE 權限操做 ON 數據庫名.表名 FROM '用戶名'@'host';
查看用戶的權限
SHOW GRANTS FOR '用戶名'@'host'
一些安全策略
0、備份文件
mysqldump -uroot -p --databases student >/var/lib/mysql/data2/student.sql
還原數據庫
先建立原來的數據庫,進入,而後還原
create database student; use student; source student.sql;
一、mysql中危險的配置項,能夠對文件繼續操做,即讀取或寫入
進入mysql的命令行輸入 ,查看導入導出權限
show global variables like '%secure%';
若是secure_file_priv那一行是空的,這說明咱們能夠在任意範圍進行文件導入或導出
若是是null,則說明禁止文件操做
若是是一個文件路徑,則只能在該路徑下面進行操做
在配置文件/etc/my.cnf下面添加,而後重啓服務
secure_file_priv =null
二、禁止用戶讀取本地文件或訪問操做系統上的文件
在/etc/my.cnf添加,而後重啓服務
set-variable=local-infile=0
若是報錯就在配置文件添加
local-infile=0
三、刪除test庫,匿名用戶能夠訪問,存在風險
drop database test;
四、刪除無用的用戶,修改root用戶的名稱
參考前面的命令
五、刪除歷史記錄
訪問 cat ~/.mysql_history,會發現以前mysql模式下輸入的命令都保存在此,將其刪除
cat /dev/null > ~/.mysql_history