最近公司讓整理一個Linux安裝Mysql的文檔。所以就整理了一下,這里將自己整理的詳細文檔做個筆記。
1、下載Mysql。
https://dev.mysql.com/downloads/mysql/5.6.html#downloads
我這里選擇安裝的版本是5.7.26
選擇一個安裝包進行下載
https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
使用下載命令直接下載,或者自己下載后上傳到服務器。
wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
2、解壓安裝包
tar –zxvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
3、復制文件到安裝目錄
復制文件到 /usr/local/mysql (一般情況都是復制這個目錄當然也可以自定義)
cp -r mysql-5.7.26-linux-glibc2.12-x86_64 /usr/local/mysql
4、添加mysql用戶組和用戶及修改對應權限
groupadd mysql
useradd -g mysql mysql
更改/usr/local/mysql 文件夾所有者屬性和對應權限
chown -R mysql:mysql /usr/local/mysql/
chown -R mysql /usr/local/mysql/
chmod -R 755 /usr/local/mysql/
5、安裝libaio 依賴包 如果已安裝則跳過
yum install libaio (我用的是centos所以安裝是用yum)
6、初始化安裝
在當前目錄(/usr/local/mysql/)創建一個data目錄 用於存放數據庫數據文件 (這個位置可以自定義)
mkdir data
注意修改data目錄權限
chown -R mysql:mysql /usr/local/mysql/data
chown -R mysql /usr/local/mysql/data
chmod -R 755 /usr/local/mysql/data
初始化安裝命令
bin/mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --initialize
mysqld 在數據庫軟件目錄的bin下面;我當前在/usr/local/mysql根目錄所以執行mysqld時前面要加上bin目錄。
basedir:數據庫軟件根目錄,即解壓后復制到的地方
datadir:數據庫數據存儲目錄,這個就是前面mkdir data前面建立的
記住最后幾個字符生成的臨時數據庫登錄密碼記住是冒號后面的都是密碼(如下圖)
如果出現:initialize specified but the data directory has files in it. Aborting錯誤,請將data目錄下的所有文件都刪除,再進行初始化安裝命令。
7、修改配置文件
修改datadir、basedir等對應的目錄。
配置文件里所有配置的文件位置必須真實存在,不存在的需要手動創建;並且賦予對應的文件權限。
vim /etc/my.cnf
8、創建日志文件並賦予對應權限
var/log/mariadb/mariadb.log 這里必須要將mariadb.log文件創建好才行。
創建文件(我是已經在var/log/mariadb目錄下了)
創建文件
touch mariadb.log
設置日志文件所有者為mysql和對應權限
chown -R mysql:mysql /var/log/mariadb/
chown -R mysql /var/log/mariadb/
chmod -R 755 /var/log/mariadb/
9、將mysql加入服務並設置開機自啟動
加入服務
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
開機啟動
chkconfig mysql on
10、啟動Mysql服務並連接數據庫
service mysql start
看到 Starting MySQL. SUCCESS! 代表啟動成功。至此安裝啟動完成。
連接數據庫 使用臨時密碼登錄
mysql -u root –p
登錄后如果輸入任何mysql 命令都是提示:You must reset your password using ALTER USER statement before executing this statement.
如下圖錯誤提示
如果是這種情況就需要強制修改用戶口令。
alter user user() identified by "123456"; (此命令是在登錄mysql后執行)
11、修改允許遠程連接
允許遠程連接例如Navicat 等客戶端登錄。
以下命令都是在登錄mysql成功后執行
update user set host='%' where user = 'root';
使修改的權限立即生效。
flush privileges;
注意,在真實的生產環境中,並不建議這么修改,因為安全風險太大。建議根據實際情況將root用戶的host項修改為某個指定的ip地址,或仍然保持localhost。
接下來就可以使用客戶端連接了。
使用客戶端連接注意要開啟防火牆3306端口才行,如果是買的雲服務器則需要在雲服務器安全設置頁面添加對應的進出端口。
如果在使用 Navicat連接后出現:Client does not support authentication protocol requested by server...
原因是由於navicat版本的問題,出現連接失敗的原因:mysql8 之前的版本中加密規則是mysql_native_password,而在mysql8之后,加密規則是caching_sha2_password
解決辦法要么升級自己的Navicat版本,要么修改mysql的加密規則
修改mysql加密規則辦法如下
先在服務器登錄mysql。
注意下面語句中"root@%"這里是指root用戶,%是host,代表任意主機。可以根據自己實際情況來修改。
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;
使修改的權限立即生效。
客戶端連接或出現:Authentication plugin ‘caching_sha2_password’ cannot be loaded
修改辦法
修改密碼規則
ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
修改密碼
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
flush privileges;
使修改的權限立即生效。