mysql install

Centos7_X86-64

  1. mysql官網(wǎng)找到對(duì)應(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文件,這個(gè)文件里面是包括了三個(gè)壓縮包文件的,一個(gè)是mysql-xxxx.tar.xz,一個(gè)是mysql-router-xxxx.tar.xz,一個(gè)是mysql-test-xxxx.tar.xz。我們需要用到的僅僅是mysql-xxxx.tar.xz這一份。
  3. 接下來(lái)配置環(huán)境變量,方便后面使用命令時(shí)不用再打那么多代碼進(jìn)入到bin目錄下運(yùn)行程序。
    cd到解壓后的mysql文件目錄中。cd mysql-8.0.19-linux-glibc2.12-x86_64/,使用pwd打印完整路徑并復(fù)制該路徑。
    使用vi工具打開(kāi)環(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用戶(hù)組sudo groupadd mysql,并添加mysql用戶(hù)useradd -r -g mysql mysql。useradd中r參數(shù)表示創(chuàng)建一個(gè)系統(tǒng)用戶(hù),-g表示指定添加到的用戶(hù)組,后面第一個(gè)mysql表示用戶(hù)組名,第二mysql表示新添加的用戶(hù)名。

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

[mysqld]
bind-address=0.0.0.0 #地址,填寫(xiě)服務(wù)器ip地址或直接配置0.0.0.0均可
port=3306 #端口,一般mysql默認(rèn)3306
user=mysql #上面步驟中添加的那個(gè)用戶(hù)名
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 #配置符號(hào)鏈接,即數(shù)據(jù)庫(kù)或表可以存儲(chǔ)在my.cnf中指定datadir之外的分區(qū)或目錄,使用符號(hào)鏈接到對(duì)應(yīng)的分區(qū)目錄。
explicit_defaults_for_timestamp=true #對(duì)timestamp數(shù)據(jù)類(lèi)型進(jìn)行配置
  1. 創(chuàng)建數(shù)據(jù)存放文件夾。sudo mkdir xxxx,路徑就是上面步驟中datadir的路徑,例如上面的sudo mkdir -p /data/mysql。

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

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

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

  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ù)的啟動(dòng)了。(但是很奇怪的是我使用systemctl是提示無(wú)unit的,而且結(jié)束時(shí)也無(wú)法使用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用戶(hù)更改密碼
FLUSH PRIVILEGES;     刷新權(quán)限                            
  1. 其他
    如果通過(guò)Navicat或其他工具無(wú)法連接到mysql,需繼續(xù)進(jìn)行下面的操作:

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

Windows(以win7-x86-64為例)

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


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

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

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

配置文件

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

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

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

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