前言
學數據庫一般都是mysql起手,最好就是自己搭建一個mysql服務可以弄明白很多知識。首先,得有一個linux服務器,我的是騰訊雲的最低配,centos7.6,打算安裝mysql8,8和以前的版本算是一個大的更迭,有不少變化,使用的時候可以多翻看手冊。
1.安裝方式
兩種方式:
1.在線安裝(很慢,很慢,很慢…)
2.離線安裝(需要提前下載,最好是國內鏡像,速度稍微快點)
2.在線安裝
在線安裝真的很慢,但是我選擇的還是在線安裝,主要是方便
1.配置mysql源
官網:https://dev.mysql.com/downloads/repo/yum/
滿足我需求的是下面這個源
把這個源弄到服務器上有2個辦法
1:直接下載,注意下載鏈接不是官網的鏈接,是庫的鏈接
先cd到一個保存的目錄下,然後運行下面命令
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
這是一個centos7版本的依賴
2:在官網上下載源,然後傳到服務器上,可以使用 rz 命令,安裝rz,sz命令
yum -y install lrzsz
我選的是第二種方式,主要考慮到以後還需要用 rz,sz命令上傳下載文件,先裝上試試是否可用
源弄到服務器上以後,直接本地安裝源
yum install mysql80-community-release-el7-3.noarch.rpm
這樣源就生效了,裏面包括安裝mysql的所有下載鏈接和相關配置
2.安裝mysql
yum --enablerepo=mysql80-community install mysql-community-server
讓剛配置的源生效,並開始安裝mysql
這個下載過程很慢,總共500-600M,下載幾十 k每秒,期間會跳出來各種確定是否的選項,不要糾結,全選y
其實下載的過程不用管,我是半夜下載的,早上看一下都下載完了,再把剛纔那個命令跑一下,它會自動檢查已經下載的包,然後跳出選擇選項,再選擇y也是沒問題的
3.啓動mysql服務
systemctl start mysqld
3.離線安裝
個人推薦這種方式,tar包下載好以後安裝會非常快
官網:https://dev.mysql.com/downloads/mysql/
滿足我要求的是下面這個包
說白了就是下載那個最大的tar包,然後rz命令傳到服務器上,然後解壓,解壓有好多包,只有下面四個是我們需要的
mysql-community-common-8.0.18-1.el7.x86_64.rpm
mysql-community-libs-8.0.18-1.el7.x86_64.rpm
mysql-community-client-8.0.18-1.el7.x86_64.rpm
mysql-community-server-8.0.18-1.el7.x86_64.rpm
還有幾個帶 compat 字樣的包,是兼容包,如果要向下兼容版本需求,建議安裝上,依次安裝上面的幾個包,如果安裝兼容包,最後安裝
rpm -ivh mysql-community-common-8.0.18-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.18-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.18-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.18-1.el7.x86_64.rpm
安裝完以後初始化mysql
mysqld --initialize
修改目錄權限
sudo chown mysql:mysql /var/lib/mysql -R
啓動mysql服務
systemctl start mysqld
4.查看服務狀態
查看mysql服務狀態
service mysqld status
如果有這個
就是成功的
4.查看默認密碼
在文件
/var/log/mysqld.log
有一個默認密碼
默認用戶:root
默認密碼:見上圖
mysql -uroot -p
輸入密碼就可以登錄了
5.修改默認密碼
默認密碼進入mysql以後你會發現壓根就不能進行有效的操作,會提示讓你修改密碼,mysql8的密碼策略要求包括:大小寫、特殊字符、數字、最短8位長度
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Test@123';
6.遠程連接mysql
mysql 好多的權限控制都在mysql的表裏面,包括增刪改查,遠程連接,密碼策略等等都在,本地連接mysql以後,使用下面命令查看現有的mysql庫
show databases;
可以看到有4個庫
其中mysql庫是常用的,進入mysql庫的命令
use mysql;
進去以後查看一下mysql庫裏面的表
show tables;
可以看到很多表
其中user表是控制用戶權限的表,我們先看一下root用戶的連接方式
select host,user from user;
root用戶的host字段是localhost,啥意思呢,就是說root只允許本機連接,其他任何地方是不能用的,這就很坑了,所以修改一下變成任何地方(%)都可以連接(如果不修改,其他地方連接就會報1130的錯誤)
update user set host='%' where user='root';
記得刷新一下權限
flush privileges;
這時候可以遠程連接mysql,但是記得用windows的cmd連接,爲啥呢,因爲其他linux連接或者navicate連接都會有問題,這些問題另外處理。
mysql -h ip地址 -P 3306 -u root -p
輸入密碼就可訪問
7.navicate報1251錯誤處理
這個主要是navicate加密方式和mysql8不一致導致的,最簡單的方式就是修改mysql8的加密方式
首先設置加密方式
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '自己設置的密碼';
再次更新密碼,設置爲永不過期
ALTER USER 'root'@'%' IDENTIFIED BY '自己設置的密碼' PASSWORD EXPIRE NEVER;
刷新一下權限
flush privileges;