一、引言
因為前段時間安裝使用apt-get安裝mysql實在是因為各種依賴問題,把我逼瘋了,最后也沒安裝下來,所以只好使用壓縮包解壓安裝,這也是效率最高的方法了,不會因為各種依賴問題煩惱。
非常感謝原博主的文章,也是借鑒了很多,如果安裝過程中遇到了問題,也可以去博主頁面看看,評論區也有很多答案
路徑:https://blog.csdn.net/qq_37598011/article/details/93489404
二、壓縮包下載
地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads
這里我們選擇當前的文件,不用選擇其他的,因為可能是deb文件壓縮的。
下載完成后我們就放在home文件夾下面,然后使用下面的命令進行解壓,順便移動一下位置
tar -xvf mysql-5.7.26-linux-glibc2.12-x86_64.tar # 用於解壓
mv mysql-5.7.26-linux-glibc2.12-x86_64 /usr/local/mysql # 解壓完成后進行移動
三、配置環境
創建mysql用戶組和用戶並修改權限
groupadd mysql useradd -r -g mysql mysql
創建數據目錄並賦予權限
mkdir -p /data/mysql #創建目錄 chown mysql:mysql -R /data/mysql #賦予權限
配置my.cnf
vim /etc/my.cnf
內容如下
[mysqld] bind-address=0.0.0.0 port=3306 user=mysql basedir=/usr/local/mysql datadir=/data/mysql socket=/tmp/mysql.sock log-error=/data/mysql/mysql.err pid-file=/data/mysql/mysql.pid #character config character_set_server=utf8mb4 symbolic-links=0 explicit_defaults_for_timestamp=true
初始化數據庫,進入mysql的bin目錄
cd /usr/local/mysql/bin/
然后我們執行初始化命令
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize
這里我報錯了:./mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
原因也很好查找,因為缺少依賴libaio,使用以下命令進行安裝即可,安裝完就可以進行初始化了,記住初始化一定要記住密碼,因為后面有些問題可能會讓你重啟服務器/虛擬機
apt-get -y install libaio* libaio-dev*
查看密碼:cat /data/mysql/mysql.err
啟動mysql,並更改root密碼,先將mysql.server放置到/etc/init.d/mysql中
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
然后啟動mysql
service mysql start ps -ef|grep mysql
但是在運行service mysql start的時候卻報了一個錯誤:Failed to start mysql.service: Unit mysql.service not found.
這里我是直接重啟服務器就好了,這也就是為什么前面要保存密碼的原因,但是如果還不行的話,我這里也收集了很多怎么安裝的資料,重啟可以解決的話就跳過吧
報錯原因呢是需要安裝:mariadb-server
於是我們繼續安裝這個依賴,報錯了
The following packages have unmet dependencies: mariadb-server : Depends: mariadb-server-5.5 (>= 5.5.64-1ubuntu0.14.04.1) but it is not going to be installed E: Unable to correct problems, you have held broken packages.
然后收集了解決方案:https://blog.csdn.net/cocos2dGirl/article/details/99332772
這里我是換配置進行解決的,然而,在運行這條命令時出錯了:
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xF1656F24C74CD1D8
Executing: /tmp/apt-key-gpghome.BhkdFzE3W6/gpg.1.sh --recv-keys --keyserver keyserver.ubuntu.com 0xF1656F24C74CD1D8 gpg: connecting dirmngr at '/tmp/apt-key-gpghome.BhkdFzE3W6/S.dirmngr' failed: IPC connect call failed gpg: keyserver receive failed: No dirmngr
繼續解決:https://my.oschina.net/xlyslr/blog/2996085
繼續報錯,這個問題還是比較友好的,安裝就完事了
Command 'curl' not found, but can be installed with: apt install curl
但是當我繼續安裝時,它還是給我報錯,數據庫沒有簽字,這個我沒找到解決方案
E: The repository 'http://mirrors.dotsrc.org/mariadb/repo/10.1/debian stretch InRelease' is not signed. N: Updating from such a repository can't be done securely, and is therefore disabled by default. N: See apt-secure(8) manpage for repository creation and user configuration details.
沒辦法,我只能另辟蹊徑,去找離線的包,解壓進去看看
下載MariaDB安裝包:https://downloads.mariadb.org/
其實解決到這話,就是另外的安裝了,因為mariadb和mysql是兩個可以替代的工具,我后面也嘗試安裝了,但是沒有成功,就不想繼續寫下去了,csdn也有很多教程
繼續正文
當我們啟動成功之后就開始登陸了,運行下面代碼並輸入我們之前的隨機密碼
./mysql -u root -p # 記住是在/usr/local/mysql/bin/目錄下執行
在執行下面三行代碼進行登錄
SET PASSWORD = PASSWORD('123456'); ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER; FLUSH PRIVILEGES;
quit
這時候你如果使用遠程連接……你會發現你無法連接,繼續執行下面命令
use mysql #訪問mysql庫 update user set host = '%' where user = 'root'; #使root能再任何host訪問 FLUSH PRIVILEGES;
quit
如果不希望每次都到bin目錄下使用mysql命令則執行以下命令
ln -s /usr/local/mysql/bin/mysql /usr/bin
為了防止版本不同而導致安裝失敗……這里我把MySQL的包放在百度雲上。
鏈接: https://pan.baidu.com/s/1oZLaBAELK9tuB1FCfQfzUg 提取碼: mvji 復制這段內容后打開百度網盤手機App,操作更方便哦