您好,登錄后才能下訂單哦!
一)Centos下安裝MySQL數據庫
安裝MySql參考網址: https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/?
因為MySQL官網有創建yum倉庫,所以直接以yum方式安裝會非常便捷,具體步驟如下:
配置服務器的yum倉庫:將MySQL的yum倉庫添加至服務器
????????a. 到?http://dev.mysql.com/downloads/repo/yum/地址下載
????????b. 根據服務器系統及版本選擇相應的RPM包
????????c. 通過以下示例命令安裝RPM包以完成服務器yum倉庫的擴展
????????????rpm -Uvh mysql57-community-release-el6-n.noarch.rpm
?2. 選擇要安裝的MySQL版本
????如果是安裝最新的版本則不需任何設置,如果是安裝歷史版本,則通過以下命令設置:
????a. yum repolist all | grep mysql????????//查看所有可用版本
????b. yum-config-manager --disable mysql57-community????????//disable掉5.7版本
????c. yum-config-manager --enable mysql56-community ????????//enable 5.6版本
?3. 安裝MySQL
????yum install mysql-community-server????????//運行該命令直接安裝第2步enable的版本
? 4. 啟動MySQL服務
?????service mysqld start ?????//centos 6
?? ??systemctl start mysqld.service ?????//centos 7
?? ??service mysqld status????//查看啟動情況
? 5. 登錄MySQL數據庫
? ? ?mysql -h localhost -u root -p????????//剛安裝的MySQL數據庫的root用戶無密碼,直接回車即可登錄命令行模式
特別提醒:
如果是在Centos 7及以上版本中安裝,則這里是不能成功登錄的。
需要如下一些處理步驟:
centos 7及以上版本中安裝MySQL后,root用戶每次嘗試登錄都會生產一個隨機密碼存在var/log/mysqld.log文件中,因此可運行grep "password" /var/log/mysqld.log?命令獲取到該隨機密碼:
????
然后,再運行mysql -h localhost -u root -p命令并以隨機密碼登錄命令模式,接下來再進行第二部分的用戶及權限管理操作。
詳細信息,請參考以下網址:https://blog.csdn.net/z13615480737/article/details/78906598?
二)MySQL用戶及權限管理
用戶管理參考網址:?https://www.cnblogs.com/fslnet/p/3143344.html
1. 初次使用為root用戶設置密碼,運行以下命令:
????mysql> set password for 'root'@'localhost' =password('123456') ;? ? ? ?//將密碼設置為 123456
2. 用戶管理
????mysql>use mysql;
????查看
????mysql> select host,user,password from?user?;
????創建
????mysql> create user ?zx_root ??IDENTIFIED?by 'xxxxx'; ? //identified by 會將純文本密碼加密作為散列值存儲
????修改
????mysql>rename ? user ?feng ?to ? newuser;//mysql 5之后可以使用,之前需要使用update 更新user表
????刪除
????mysql>drop?user newuser; ? //mysql5之前刪除用戶時必須先使用revoke 刪除用戶權限,然后刪除用戶,mysql5之后drop 命令可以刪除用戶的同時刪除用戶的相關權限
????更改密碼
????mysql> set password?for?zx_root =password('xxxxxx');
?????mysql> update ?mysql.user ?set ?password=password('xxxx') ?where user='otheruser';
3. 查看用戶權限
????mysql> show grants for zx_root;
????賦予權限
????mysql> grant?select/all?on dmc_db.* ?to?zx_root;
????回收權限
????mysql> revoke ?select on dmc_db.* ?from ?zx_root; ?//如果權限不存在會報錯
?
????上面的命令也可使用多個權限同時賦予和回收,權限之間使用逗號分隔
????grant select on testdb.* to common_user@’%’;
????grant insert on testdb.* to common_user@’%’;
????grant update on testdb.* to common_user@’%’;
????grant delete on testdb.* to common_user@’%’;
????或者,用一條 MySQL 命令來替代:
????grant select, insert, update, delete on testdb.* to common_user@'%';
????如果想立即看到結果使用
????flush ?privileges ;
????命令更新?
?
????設置權限時必須給出以下信息
????1,要授予的權限
????2,被授予訪問權限的數據庫或表
????3,用戶名
????grant和revoke可以在幾個層次上控制訪問權限
????1,整個服務器,使用 grant ALL ?和revoke ?ALL
????2,整個數據庫,使用on ?database.*
????3,特點表,使用on ?database.table
????4,特定的列
????5,特定的存儲過程
?
????user表中host列的值的意義
????% ? ? ? ? ? ? ?匹配所有主機
????localhost ? ?localhost不會被解析成IP地址,直接通過UNIXsocket連接
????127.0.0.1 ? ? ?會通過TCP/IP協議連接,并且只能在本機訪問;
????::1 ? ? ? ? ? ? ? ??::1就是兼容支持ipv6的,表示同ipv4的127.0.0.1
?
?4.權限授予實例
????grant 數據庫開發人員,創建表、索引、視圖、存儲過程、函數。。。等權限
????grant 創建、修改、刪除 MySQL 數據表結構權限。
????grant create on testdb.* to developer@’192.168.0.%’;
????grant alter on testdb.* to developer@’192.168.0.%’;
????grant drop on testdb.* to developer@’192.168.0.%’;
????grant 操作 MySQL 外鍵權限
????grant references on testdb.* to developer@’192.168.0.%’;
????grant 操作 MySQL 臨時表權限
????grant create temporary tables on testdb.* to developer@’192.168.0.%’;
????grant 操作 MySQL 索引權限
????grant index on testdb.* to developer@’192.168.0.%’;
????grant 操作 MySQL 視圖、查看視圖源代碼權限
????grant create view on testdb.* to developer@’192.168.0.%’;
????grant show view on testdb.* to developer@’192.168.0.%’;
????grant 操作 MySQL 存儲過程、函數權限
????grant create routine on testdb.* to developer@’192.168.0.%’; ????????//now, can show procedure status
????grant alter routine on testdb.* to developer@’192.168.0.%’; ????????//now, you can drop a procedure
????grant execute on testdb.* to developer@’192.168.0.%’;
????
????grant 普通 DBA 管理某個 MySQL 數據庫的權限
????grant all privileges on testdb to dba@’localhost’;
????其中,關鍵字 “privileges” 可以省略。
????
????grant 高級 DBA 管理 MySQL 中所有數據庫的權限
????grant all on *.* to dba@’localhost’;
????
????MySQL grant 權限,分別可以作用在多個層次上
????1. grant 作用在整個 MySQL 服務器上:
????grant select on *.* to dba@localhost;?????????// dba 可以查詢 MySQL 中所有數據庫中的表。
????grant all on *.* to dba@localhost; ????????????// dba 可以管理 MySQL 中的所有數據庫
????2. grant 作用在單個數據庫上:
????grant select on testdb.* to dba@localhost; ????????// dba 可以查詢 testdb 中的表。
????3. grant 作用在單個數據表上:
????grant select, insert, update, delete on testdb.orders to dba@localhost;
????4. grant 作用在表中的列上:
????grant select(id, se, rank) on testdb.apache_log to dba@localhost;
????5. grant 作用在存儲過程、函數上:
????grant execute on procedure testdb.pr_add to ’dba’@’localhost’;
????grant execute on function testdb.fn_add to ’dba’@’localhost’;
注意:
????a. 修改完權限以后 一定要刷新服務,或者重啟服務,刷新服務用:FLUSH PRIVILEGES。
????b.?MySQL中默認存在一個用戶名為空的賬戶,只要在本地,可以不用輸入賬號密碼即可登錄到MySQL中。而因為這個賬戶的存在,導致新增的用戶無法用賬號密碼登錄,只需以root用戶登陸,然后刪掉即可。
????????
????mysql?-u?root???#?以root賬戶登錄MySQL use?mysql???#選擇mysql庫 delete?from?user?where?User='';??#刪除賬號為空的行 flush?privileges;??#刷新權限 exit??#退出mysql
????c. 運行下面命令使root用戶可遠程登錄
????mysql>?grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
?
權限表
權限 | 說明 |
all | |
alter | |
alter routine | 使用alter procedure 和drop procedure |
create | |
create routine | 使用create ?procedure |
create temporary tables | 使用create temporary table |
create ?user | |
create view | |
delete | |
drop | |
execute | 使用call和存儲過程 |
file | 使用select into outfile ?和load data infile |
grant option | 可以使用grant和revoke |
index | 可以使用create index 和drop index |
insert | |
lock tables | 鎖表 |
process | 使用show full processlist |
reload | ? ?使用flush |
replication client | 服務器位置訪問 |
replocation slave | 由復制從屬使用 |
select | |
show databases | |
show view |
shutdown | 使用mysqladmin shutdown 來關閉mysql |
super | |
update | |
usage | 無訪問權限 |
三)創建遠程登錄
1. 首先,授權特定用戶具有遠程登錄權限,具體方法,參考上述第二部分。
2. 其次,MySQL數據庫默認使用3306端口,需要對外開放3306端口,用戶才能從遠程端登錄數據庫系統。
a. centos 7以下執行以下命令對外開放3306端口:
#/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
#/etc/rc.d/init.d/iptables save
#/etc/init.d/iptables status
b. centos 7及以上執行以下命令對外開放3306端口:
#firewall-cmd --zone=public --add-port=3306/tcp --permanent
#firewall-cmd --reload?
四)數據庫備份及恢復
備份
備份數據庫命令,兩命令沒有區別
????????mysqldump -hhostname -uusername -p databasename > backupfile.sql
或
????????mysqldump?-hhostname -uusername -p --add-drop-table? databasename > backupfile.sql
注:這2個命令dump的數據沒有數據庫創建語句,因此在恢復時,如果目標庫不存在,需先手動創建!
? ?2. 同時備份多個MySQL數據庫
????????mysqldump -hhostname -uusername -p --databases databasename1 databasename2 databasenameN > backupfile.sql
? ?3. 僅僅備份表結構
????????mysqldump? -hhostname -uusername -p --no-data --databases database1 database2 databaseN > backupfile.sql
注:這2個命令dump的數據含數據庫創建語句!
? ?4. 只備份數據庫中某些表
????????mysqldump -hhostname -uusername -p databasename? specify_table1 specify_table2 > backupfile.sql
? ?5. 備份所有數據庫
????????mysqldump? -hhostname -uusername -p --all-databases > backupfile.sql
? ? 6. 將數據庫壓縮備份
????????mysqldump -hhostname -uusername -p databasename? | gzip > backupfile.sql.gz
恢復
? ? 1.? 恢復數據庫命令
????????mysql -hhostname -uusername -p databasename < backupfile.sql
? ? 2. 從多個數據庫備份或所有數據庫備份中恢復
????????mysql -hhostname -uusername -p --one-database databasename < backupfile.sql????????????//恢復特定的數據庫,目標庫必須存在
????????mysql -hhostname -uusername -p?< backupfile.sql??????????????//從多個備份中一次恢復全部數據庫,目標庫不存在可以自動創建
? ? 3. 恢復壓縮的MySQL數據庫
????????gunzip < backupfile.sql.gz | mysql -hhostname -uusername -p databasename
注:
???恢復的邏輯是:
????1. 在備份后新建的表將保留;
? ? 2. 刪除了備份中的表,或者修改了備份中的數據都將恢復。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。