天天看點

Linux --- CentOS 7 搭建MySQL5.6資料庫伺服器與配置詳解

Centos7将預設資料庫mysql替換成了Mariadb,如果想繼續使用mysql 需要解除安裝Mariadb 再安裝mysql;

1、解除安裝 MariaDB

  • 檢視已安裝的程式
rpm -qa |grep -i mariadb
           
  • 解除安裝已安裝的 mariadb
yum remove MariaDB-*
           

注:可再次上面兩條指令,檢查是否解除安裝幹淨

- 删除 /etc/my.cnf

rm /etc/my.cnf
           

2、安裝 MySQL

下載下傳離線安裝包

  • MySQL官網
  • 選擇安裝包版本

    由于CentOS 系統 是 Red Hat 的分支發行版,所有選擇Red Hat安裝包就好;

Red Hat Enterprise Linux  / Oracle Linux  (x86, -bit), RPM Bundle
           
  • 下載下傳後的包為tar包

如果是在windows平台下載下傳的tar包,可通過WinSCP軟體拷貝到CentOS系統下

- 解壓tar安裝包

将下載下傳的壓縮包放到/usr/local/目錄下, 執行解壓縮指令

安裝 MySQL

  • 切換至root權限
su - root
           
  • 使用 rpm 安裝
  • 安裝完成,啟動MySQL
systemctl start mysql
ps -ef | grep mysql
           
  • 檢視初始密碼
cat /root/.mysql_secret
           

A RANDOM PASSWORD HAS BEEN SET FOR THE MySQL root USER !

You will find that password in ‘/root/.mysql_secret’.

You must change that password on your first connect,

no other statement but ‘SET PASSWORD’ will be accepted.

See the manual for the semantics of the ‘password expired’ flag.

Also, the account for the anonymous user has been removed.

In addition, you can run:

/usr/bin/mysql_secure_installation

which will also give you the option of removing the test database.

This is strongly recommended for production servers.

為MySQL的root使用者設定了一個随機密碼!

可以在“/root/.mysqlsecret”中找到該密碼。

你必須在第一次連接配接上更改密碼

- 使用随機密碼登陸後,更改密碼

mysql -uroot -p
SET PASSWORD = PASSWORD('root');
           
  • 設定開機啟動

1.建立配置檔案

touch /usr/lib/systemd/system/mysql.service
           

2.編輯 /usr/lib/systemd/system/mysql.service 檔案

vim /usr/lib/systemd/system/mysql.service
           

3.在mysql.service檔案中添加如下配置:

[Unit]
Description=MySQL Server
Documentation=man:mysqld()
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 
           

ExecStart=/usr/local/mysql/bin/mysqld (此處請對應修改為MySQL程式所在的路徑)

4.設定開機啟動

注:MySQL的預設安裝位置
/var/lib/mysql/               #資料庫目錄
/usr/share/mysql              #配置檔案目錄
/usr/bin                      #相關指令目錄
/etc/init.d/mysql             #啟動腳本
           

2、配置 MySQL

MySQL簡單配置

  • 啟動安全配置向導
/usr/bin/mysql_secure_installation
           

配置 MySQL字元集

  • 編輯檔案 /etc/my.cnf
vim /etc/my.cnf
           
  • 在 my.cnf 檔案中的 [mysqld] 标簽下添加如下内容
[client] 
password        = root
port            = 3306 
default-character-set=utf8 
[mysqld] 
port            = 3306 
character_set_server=utf8 
character_set_client=utf8 
collation-server=utf8_general_ci 
#(注意linux下mysql安裝完後是預設:表名區分大小寫,列名不區分大小寫; 0:區分大小寫,1:不區分大小寫) 
lower_case_table_names=1 
#(設定最大連接配接數,預設為 151,MySQL伺服器允許的最大連接配接數16384; ) 
max_connections=1000 
[mysql] 
default-character-set = utf8
           
  • 配置完成,重新開機mysql
systemctl restart mysql
           
  • 登入 mysql 檢視字元集是否設定成功
show variables like "%character%";
show variables like "%collation%";
           
此時要想遠端登入資料庫,還需要先設定權限

3、配置使用者權限

建立使用者

grant 權限 on 資料庫.* to 使用者名@登入主機 identified by “密碼”;

使用grant 方式建立使用者更完美:

當資料庫存在使用者的時候GRANT會對使用者進行授權,但當資料庫不存在該使用者的時候,就會建立相應的使用者并進行授權。

- 建立本地登入使用者

  • 建立使用者時即賦予權限(允許遠端通路)
# 允許使用者名為`username`的使用者從任意ip以密碼為password通路所有資料庫
grant all privileges on *.* to [email protected]'%' identified by 'password';
           
注意:
  1. [email protected]’%’ ,% 代表允許所有IP的username登入
  2. [email protected],localhost 代表允許本地username登入
  3. [email protected],127.0.0.1 可以設定為單個IP,即允許單個遠端主機登入
  4. all privileges,代表所有權限
  5. 權限清單可被替換為一下任意組合:

    select,insert,update,delete,create,drop,

    index,alter,grant,references,reload,shutdown,process,file

查詢所有使用者權限清單
select Host,User from mysql.user;
查詢user使用者的權限
show grants for user;
單獨授權user使用者(查增改删)權限
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON 資料庫.* TO user@'%' IDENTIFIED BY '密碼';
授權user使用者憑密碼本地通路所有資料庫
grant all privileges on *.* to user@localhost identified by '密碼';
授權user使用者憑密碼遠端通路指定資料庫
grant all privileges on 資料庫.* to user@'%' identified by '密碼';
授權user使用者憑密碼遠端通路所有資料庫
grant all privileges on *.* to user@'%' identified by '密碼';
           

查詢使用者權限清單

  • 切換至 mysql 資料庫
use mysql
           
  • 查詢權限清單
  • 查詢user使用者的權限

4、問題集錦

(一) 忘記密碼 ?

  1. 停止 mysql 服務
systemctl stop mysql
           
  1. 以不檢查權限的方式重新啟動 mysql
  1. 修改 mysql密碼
mysql -u root
update mysql.user set password=PASSWORD('newpassword') where User='root’;
flush privileges;
           
  1. 重新啟動 mysql

總結

參考

MySQL建立使用者**

繼續閱讀