1. 程式人生 > >Linux 下 mysql 的安裝

Linux 下 mysql 的安裝

1、下載安裝包

去到mysql官網 https://www.mysql.com/downloads/ 下載對應的安裝包
選擇 MySQL Community Server,我這裡下載的是 mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz

2、安裝 mysql

1.上傳壓縮檔案到伺服器,並解壓檔案 tar -xvf mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz
*.tar.xz檔案解壓要分兩步,但我上面直接解壓也成功了

xz -d mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz
tar -xvf mysql-8.0.13-linux-glibc2.12-x86_64.tar

2.將解壓後目錄複製到安裝目錄/usr/local/下並更改檔名
mv -r mysql-8.0.13-linux-glibc2.12-x86_64 /usr/local/mysql
在目錄下新建一個資料夾data,用於存放資料 mkdir /usr/local/mysql/data

3.新增mysql組和使用者
groupadd mysql
useradd -r -g mysql mysql
把安裝目錄的許可權給到 mysql組的mysql使用者
chown -R mysql:mysql /usr/local/mysql

讓mysql執行的時候使用一個獨立的賬號,如果mysql被黑了那麼開始拿到的許可權就是那個建立的賬號而不是預設的root
我們在編譯安裝的時候建立一個mysql組和一個mysql使用者,並把datadir和安裝目錄屬主改為mysql,在MySQL啟動的時候,單程序mysqld,該程序的屬主就是mysql,這樣就保證了mysql服務的獨立性,即便mysql服務被黑掉,得到了mysql使用者許可權,也不會影響整個系統的安全

4.配置my.cnf檔案
修改 /etc/my.cnf 檔案

user=mysql
port=3306
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock

5.初始化mysql 配置
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

  • mysql5.7之前命令是:bin/mysql_install_db --user=mysql,之後的版本已經被mysqld --initialize
    替代,後面的配置在my.cnf配置了,也可以不帶
  • 如果沒有異常,會自動生成賬號root和密碼
  • 2018-12-11T01:31:14.713646Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.13) initializing of server in progress as process 128876
    2018-12-11T01:31:19.886238Z 5 [Note] [MY-010454] [Server] A temporary password is generated for [email protected]: l;PS>rl4sl(B
    2018-12-11T01:31:21.653302Z 0 [System] [MY-013170] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.13) initializing of server has completed
    

3、啟動服務、配置賬號密碼

1)開啟服務

/usr/local/mysql/bin/mysqld_safe --user=mysql &
&是後臺執行的意思,執行命令之後,終端會卡在一個位置,再按一下Enter即可

執行後報了個錯
mysqld_safe error: log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql'.
很明顯是因為路徑檔案不存在,且需要給mysql許可權,之前在配置 /etc/my.cnf時,裡面的配置為
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
建立這個路徑,並授權給mysql,重新開啟服務
mkdir /var/log/mariadb
touch /var/log/mariadb/mariadb.log
chown -R mysql:mysql /var/log/mariadb/

2)加入開機自啟項

1.將{mysql}/support-files/mysql.server 拷貝為/etc/init.d/mysql並設定執行許可權,這樣就可以使用service mysql命令啟動/停止服務
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql

2.註冊啟動服務
chkconfig --add mysql
檢視chkconfig --list mysql

使用 service 啟動:service mysql start
使用 service 停止:service mysql stop
使用 service 重啟:service mysql restart

3)環境變數

配置全域性環境變數,可以在其他位置使用 mysql
編輯 / etc/profile 檔案
vim /etc/profile
在 profile 檔案底部新增如下,儲存後退出
export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
設定環境變數立即生效
source /etc/profile

4)修改密碼,建立使用者

1.登入
mysql -uroot -p 密碼使用初始化時生成的密碼

2.修改密碼
alter user 'root'@'localhost' identified with mysql_native_password by '***';

這裡修改密碼的時候加上 with mysql_native_password,mysql_native_password 8.0改變了 身份驗證外掛caching_sha2_password, 開啟 my.ini (或者my.cofg) 可以看到變更了 5.7及其以前的方式mysql_native_password

3.建立使用者,並授予許可權
create user 'zou'@'%' identified with mysql_native_password by '***';
grant replication slave on *.* to 'zou'@'%';
flush privileges; //重新整理
可以使用該賬號遠端連線

4.可以修改root使用者可遠端連線
update mysql.user set host='%' where user = 'root';