mysql install

Centos7_X86-64

  1. mysql官網(wǎng)找到對應(yīng)的版本。我選擇的是linux-generic的64位版本。
    截屏2020-04-0114.24.31.png
截屏2020-04-0114.34.02.png
  1. 在服務(wù)器中使用wget xxx下載壓縮包文件。其中的xxx指的就是上面步驟中拷貝的鏈接地址。
  2. 解壓下載的文件:tar -vxf xxxxxxx.tar.xz -C path
    其中由于mysql8.x中已經(jīng)不提供tar.gz文件了,只有tar.xz和tar,因此解壓參數(shù)去掉z參數(shù)。path為指定的解壓目錄,也可以直接刪掉-C path,表示在解壓在當(dāng)前目錄下。
    注意,如果下載的是tar文件,這個文件里面是包括了三個壓縮包文件的,一個是mysql-xxxx.tar.xz,一個是mysql-router-xxxx.tar.xz,一個是mysql-test-xxxx.tar.xz。我們需要用到的僅僅是mysql-xxxx.tar.xz這一份。
  3. 接下來配置環(huán)境變量,方便后面使用命令時不用再打那么多代碼進(jìn)入到bin目錄下運(yùn)行程序。
    cd到解壓后的mysql文件目錄中。cd mysql-8.0.19-linux-glibc2.12-x86_64/,使用pwd打印完整路徑并復(fù)制該路徑。
    使用vi工具打開環(huán)境變量文件sudo vi ~/.bash_profile,并將上面復(fù)制的路徑填入:
MYSQL_PATH=xxxxxx #xxxxxx就是mysql壓縮包文件的解壓路徑。
PATH=$PATH:$MYSQL_PATH/bin

export MYSQL_PATH

使用source ~/.bash_profile使得環(huán)境變量配置的變更生效。
使用cd $MYSQL_PATH查看是否配置成功。

5.創(chuàng)建mysql用戶組sudo groupadd mysql,并添加mysql用戶useradd -r -g mysql mysql。useradd中r參數(shù)表示創(chuàng)建一個系統(tǒng)用戶,-g表示指定添加到的用戶組,后面第一個mysql表示用戶組名,第二mysql表示新添加的用戶名。

6.對mysql的配置文件進(jìn)行處理。sudo vim /etc/my.cnf,如果是通過解壓tar包進(jìn)行安裝Mysql而非使用yum/apt-get/npm等進(jìn)行安裝,是不存在這個文件的,直接使用vim編輯保存即可。
內(nèi)容如下:

[mysqld]
bind-address=0.0.0.0 #地址,填寫服務(wù)器ip地址或直接配置0.0.0.0均可
port=3306 #端口,一般mysql默認(rèn)3306
user=mysql #上面步驟中添加的那個用戶名
basedir=/xxxx/mysql #解壓后的文件夾路徑
datadir=/data/mysql #數(shù)據(jù)存放的文件路徑。
socket=/tmp/mysql.sock 
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
#character config
character_set_server=utf8mb4 #編碼配置
symbolic-links=1 #配置符號鏈接,即數(shù)據(jù)庫或表可以存儲在my.cnf中指定datadir之外的分區(qū)或目錄,使用符號鏈接到對應(yīng)的分區(qū)目錄。
explicit_defaults_for_timestamp=true #對timestamp數(shù)據(jù)類型進(jìn)行配置
  1. 創(chuàng)建數(shù)據(jù)存放文件夾。sudo mkdir xxxx,路徑就是上面步驟中datadir的路徑,例如上面的sudo mkdir -p /data/mysql

  2. 將創(chuàng)建的數(shù)據(jù)存儲文件歸屬配置為之前創(chuàng)建的mysql用戶:
    sudo chown mysql:mysql -R /data/mysql,第一個mysql表示用戶組,第二mysql表示用戶,R參數(shù)表示遞歸處理,即data、mysql即內(nèi)部的全部文件都指定為mysql用戶所有,后面的/data/mysql表示要配置歸屬用戶的文件(路徑)。

  3. 啟動mysqld初始化程序
    例如:
    sudo $MYSQL_PATH/bin/mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize
    --defaults-file表示的是配置文件的路徑,我們在etc創(chuàng)建了配置文件my.cnf,這里就配置為/etc/my.cnf
    --basedir配置的是mysql解壓后的文件路徑,如示例代碼中我們解壓路徑是/usr/local/mysql/。
    --datadir就是第7步中創(chuàng)建的數(shù)據(jù)存放文件夾的路徑。
    --user中的指的是第5步中創(chuàng)建的用戶
    注意basedir和datadir中一定要在路徑后面補(bǔ)全“/”,例如/a/b/c/,如果路徑寫成了/a/b/c,很可能就會報(bào)錯

  4. 查看自動生成的root用戶密碼
    cat /data/mysql/mysql.err,這里的文件路徑對應(yīng)于/etc/my.cnf中l(wèi)og-error配置的路徑。
    一般會在最后一行看到“A temporary password is generated for root@localhost:xxxxx ”,這里就是生成的root用戶密碼。

  5. 將mysql服務(wù)提交到system-server中:
    cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql,以后我們就可以使用systemctl start mysqlservice mysql start進(jìn)行mysql服務(wù)的啟動了。(但是很奇怪的是我使用systemctl是提示無unit的,而且結(jié)束時也無法使用service mysql stop而只能使用mysql.server stop)

  6. 修改root登錄密碼
    mysql -uroot -p,輸入log-error中提供的root密碼登錄mysql。

SET PASSWORD = PASSWORD('新密碼'); #設(shè)置密碼變量
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER; #為root用戶更改密碼
FLUSH PRIVILEGES;     刷新權(quán)限                            
  1. 其他
    如果通過Navicat或其他工具無法連接到mysql,需繼續(xù)進(jìn)行下面的操作:

use mysql                                            #訪問mysql庫
update user set host = '%' where user = 'root';      #使root能再任何host訪問
FLUSH PRIVILEGES;                                    #刷新權(quán)限

Windows(以win7-x86-64為例)

  1. 去官方網(wǎng)站下載mysql軟件,官網(wǎng)提供了一鍵安裝及壓縮包免安裝版本。由于一鍵安裝版本會默認(rèn)幫你安裝一個workbench客戶端,軟件安裝包比較大,所以我們一般選擇壓縮版版本的。


    截屏2020-04-1220.45.22.png
  2. 下載好以后,進(jìn)行解壓。
  3. 個人習(xí)慣,解壓后進(jìn)行環(huán)境變量的配置,簡單說就是將解壓的文件目錄和mysql/bin目錄這兩個目錄添加到環(huán)境變量中。
  4. 安裝及初始化。
    運(yùn)行mysqld --install(如果沒有進(jìn)行第三步環(huán)境變量配置的話,需要先cd到mysql/bin目錄下,再執(zhí)行這條命令)
  5. 當(dāng)安裝成功后,會提示"Service successfully installed"。
    若安裝失敗,建議以失敗原因作為關(guān)鍵詞到谷歌進(jìn)行搜索。一般多出現(xiàn)的情況是之前存在老版本mysql未卸載干凈,或老版本的mysql服務(wù)沒有停止。
  6. 使用mysqld --initialize --console進(jìn)行初始化操作。此項(xiàng)如果執(zhí)行成功,一般會在最后一行提示“a temporary password is generated for root@localhost:xxxxxx”,記錄好這個密碼,這是初始化時root用戶的登錄密碼。
  7. 使用net start mysql啟動mysql服務(wù)。
  8. 使用root賬號登錄mysql,修改root用戶登錄密碼。
    登錄口令為mysql -uroot -p,隨后輸入上面記錄的臨時登錄密碼進(jìn)行登錄。
    登錄后,使用alter user ’root‘@’localhost‘ identified by ’xxxx‘,
    在xxxx出填入自定義密碼,再使用flush privileges刷新權(quán)限即可。使用exit退出后,測試能否用新密碼登錄root用戶。
  9. 創(chuàng)建新用戶
    有時我們需要創(chuàng)建一個自定義用戶而不想使用root用戶進(jìn)行操作。
    可以通過insert into mysql.user(Host,User,Password) values("localhost","test",password("1234"))進(jìn)行操作。
    并使用grant 權(quán)限 on 數(shù)據(jù)庫.* to 用戶名@登錄主機(jī) identified by "密碼"為新用戶賦予權(quán)限,其中權(quán)限包括all(所有權(quán)限)、select、update、delete、drop等等,而數(shù)據(jù)庫.*表示我們可以限制用戶只能使用某個數(shù)據(jù)庫的某一些數(shù)據(jù)表。
  10. 如果使用mysql8,可能會出現(xiàn)命令行操作mysql數(shù)據(jù)庫是正常的,但是使用navicat等其他數(shù)據(jù)庫軟件時會出現(xiàn)錯誤提示連接失敗。大部分情況是由于mysql8中修改了加密規(guī)則,因此我們只需要在命令行重新更改加密規(guī)則,就能在Navicat正常連接到數(shù)據(jù)庫了。
mysql8安裝時選擇了強(qiáng)加密規(guī)則caching_sha2_password,與之前的mysql5.7的mysql_native_password規(guī)則不同,navicate驅(qū)動目前不支持新加密規(guī)則

手動修改加密規(guī)則改成與mysql5.7一樣

ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #修改加密規(guī)則  
  
  
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';  #更新一下用戶的密碼  
 
 
FLUSH PRIVILEGES; #刷新權(quán)限

配置文件

在執(zhí)行安裝之前,我們也可以根據(jù)個人需要修改配置文件:

[mysqld] 
# 設(shè)置mysql的安裝目錄,也就是我們解壓的目錄
basedir=C:/mysql-x.x.xx-winx64
# 設(shè)置mysql數(shù)據(jù)庫的數(shù)據(jù)的存放目錄
# datadir=C:/mysql-x.x.xx-winx64/data
# 設(shè)置默認(rèn)使用的端口
port=3306
# 允許最大連接數(shù)
max_connections=200
# 允許連接失敗的次數(shù)。這是為了防止有人試圖攻擊數(shù)據(jù)庫
max_connect_errors=10
# 服務(wù)端使用的字符集
character-set-server=utf8mb4
# 數(shù)據(jù)庫字符集對應(yīng)一些排序等規(guī)則使用的字符集
collation-server=utf8mb4_general_ci
# 創(chuàng)建新表時將使用的默認(rèn)存儲引擎
default-storage-engine=INNODB
# 默認(rèn)使用“mysql_native_password”插件作為認(rèn)證加密方式
# MySQL8.0默認(rèn)認(rèn)證加密方式為caching_sha2_password
default_authentication_plugin=mysql_native_password
 
[mysql]
# 設(shè)置mysql客戶端默認(rèn)字符集
default-character-set=utf8mb4
 
[client]
default-character-set=utf8mb4
port=3306
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容