一、服務管理
啟動:
service mysqld start
停止:
service mysqld stop
重新開機:
service mysqld restart
檢視狀态:
service mysqld status
說明:
# 用RPM安裝的以一般服務的形式使用
service mysqld start
# 其實上面對應的啟動檔案放在/etc/init.d/mysqld下,是以還可以這樣使用
/etc/init.d/mysqld start
# 如果使用二進制包(tar.gz)安裝的,那麼服務的設定檔案放在/usr/local/mysql/support-files/mysql.server,然後拷貝到/etc/init.d檔案夾後,這樣使用
/etc/init.d/mysql.server start
# 如果是5.5版本以下的,以RPM包安裝的,那麼服務名為mysql,少了一個d
# 這裡以start進行說明,以此類推其它參數,且以上方式在Ubuntu和CentOS都同樣适用
# 針對新版的Linux,有systemctl服務管理工具,其實這個是相容service的,也可以使用這個工具進行服務的管理
# 如果使用systemctl進行伺服器管理的,一般服務會有mysql.service這樣的字尾,其實.service可以不用要,但視具體情況而定。
針對Mac系統:
# 以安裝包安裝的,那麼可以通過launchctl服務管理工具:
sudo launchctl start com.oracle.oss.mysql.mysqld
# 可以看出上面的服務名其實很長,不好看且不好找,推薦使用二進制包的形式:
/usr/local/mysql/support-files/mysql.server start
針對啟動方式的多種模式:
# mysqld,傳統程序模式
# 啟動mysql伺服器:
./mysqld --defaults-file=/etc/my.cnf --user=root
# 用戶端連接配接:
mysql --defaults-file=/etc/my.cnf
or
mysql -S /tmp/mysql.sock
# mysqld_safe,官方推薦安裝模式,有日志輸出
# 啟動mysql伺服器:
./mysqld_safe --defaults-file=/etc/my.cnf --user=root
# mysql.server,以服務的模式
cp -v /usr/local/mysql/support-files/mysql.server /etc/init.d/
chkconfig --add mysql.server
chkconfig mysql.server on
# 啟動mysql伺服器:
service mysql.server {start|stop|restart|reload|force-reload|status}
# mysqld_multi,多個服務端啟動管理工具
# 啟動mysql伺服器:
./mysqld_multi --defaults-file=/etc/my.cnf start 3306-3307
# 關閉mysql伺服器:
./mysqladmin shutdown
二、重置root密碼
使用的是mysql_secure_installation工具:
Enter current password for root (enter for none):
# 解釋:輸入目前 root 使用者密碼,預設為空,直接回車。
Set root password? [Y/n] y
# 解釋:要設定 root 密碼嗎?輸入 y 表示願意。
Remove anonymous users? [Y/n] y
# 解釋:要移除掉匿名使用者嗎?輸入 y 表示願意。
Disallow root login remotely? [Y/n] y
# 解釋:不想讓 root 遠端登陸嗎?輸入 y 表示願意。
Remove test database and access to it? [Y/n] y
# 解釋:要去掉 test 資料庫嗎?輸入 y 表示願意。
Reload privilege tables now? [Y/n] y
# 解釋:想要重新加載權限嗎?輸入 y 表示願意。
一般情況初次安裝的資料庫是沒有密碼,登入使用者名為root,但是如果二進制包安裝的,其實在指令行上已經有給出一長串比較複雜的密碼,如果此時關掉了,那麼隻能通過這個檔案進行查找:
grep 'temporary password' /var/log/mysqld.log
如果提示沒有這個檔案,可以通過ps或者my.cnf檔案看日志檔案放在哪裡,或者和data檔案夾一起。
忘記密碼的修改密碼操作:
# 修改配置參數
vi /etc/my.cnf
# 在 [mysqld] 下面加上:
skip-grant-tables
# 重新開機mysql
service mysqld restart
# 注意事項
# 此時所有使用者登入目前資料庫都是免密碼的,是以此時資料庫的安全性是非常低的。
# 修改密碼
mysqladmin -u使用者名 -p舊密碼 password 新密碼
# 去掉參數
# 密碼修改好了之後再将配置檔案中 skip-grant-tables去掉
# 再次重新開機資料庫。
三、使用者管理,增加遠端通路
grant on指令用于增加新使用者并控制其權限。
grant on指令格式:
MySQL> grant select on 資料庫.* to 使用者名@登入主機 identified by “密碼”;
增加一個使用者test1,密碼為abc,讓他可以在任何主機上登入,并對所有資料庫有查詢、插入、修改、删除的權限。首先用root使用者連入MYSQL,然後鍵入以下指令:
MySQL> grant select,insert,update,delete on *.* to test1@"" Identified by "abc";
但增加的使用者是十分危險的,你想如某個人知道test1的密碼,那麼他就可以在internet上的任何一台電腦上登入你的mysql資料庫并對你的資料可以為所欲為了,解決辦法如下。
增加一個使用者test2密碼為abc,讓他隻可以在localhost上登入,并可以對資料庫mydb進行查詢、插入、修改、删除的操作(localhost指本地主機,即MYSQL資料庫所在的那台主機),這樣使用者即使用知道test2的密碼,他也無法從internet上直接通路資料庫,隻能通過MYSQL主機上的web頁來通路了。
MySQL> grant select,insert,update,delete on mydb.* to test2@localhost identified by "abc";
如果你不想test2有密碼,可以再打一個指令将密碼消掉。
MySQL> grant select,insert,update,delete on mydb.* to test2@localhost identified by "";
如果想要全部權限,可以将select,insert,update,delete改成all
完整了上述操作之後,使其生效:
MySQL> flush privileges;
當報下面錯誤,提示密碼不滿足目前的政策要求。錯誤如下:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
# 或者
mysqladmin: unable to change password; error: 'Your password does not satisfy the current policy requirements'
解決方法:可以按照現有政策設定密碼,也可以更改密碼政策。
# 更改密碼政策為LOW
MySQL> set global validate_password_policy=0;
# 更改密碼長度 密碼最小長度為4
MySQL> set global validate_password_length=4;
進入 MySQL 檢視你的密碼驗證政策
mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------+-------+
| validate_password_check_user_name | OFF |
| validate_password_dictionary_file | |
| validate_password_length | 4 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | LOW |
| validate_password_special_char_count | 1 |
+--------------------------------------+-------+
7 rows in set (0.00 sec)
- validate_password_check_user_name 不得使用目前會話使用者名作為密碼的一部分
- validate_password_dictionary_file 驗證密碼強度的字典檔案路徑
- validate_password_length 密碼最小長度
- validate_password_mixed_case_count 密碼至少要包含的小寫字母個數和大寫字母個數
- validate_password_number_count 密碼至少要包含的數字個數
- validate_password_policy 密碼強度檢查等級,0/LOW、1/MEDIUM、2/STRONG
- 0/LOW:隻檢查長度。
- 1/MEDIUM:檢查長度、數字、大小寫、特殊字元。
- 2/STRONG:檢查長度、數字、大小寫、特殊字元字典檔案。
- validate_password_special_char_count 密碼至少要包含的特殊字元數
四、連接配接資料庫
mysql -h 主機位址 -u 使用者名 -p使用者密碼 -P 端口
備注:經過測試隻有-p是要連在一起的,其餘可以不用。