柚子快報(bào)邀請(qǐng)碼778899分享:ubuntu MySQL的安裝
柚子快報(bào)邀請(qǐng)碼778899分享:ubuntu MySQL的安裝
本次安裝MySQL基于linux Ubuntu系統(tǒng)安裝,和linux CentOS的安裝會(huì)有一些不同,如安裝命令Ubuntu 是 apt 而CentOS是yum,另一個(gè)比較大的區(qū)別是Ubuntu安裝MySQL時(shí)有默認(rèn)的MySQL版本,而CentOS安裝MySQL時(shí)需要選擇MySQL版本安裝。
我的Ubuntu版本是22.04,這個(gè)版本的Ubuntu自帶8.0版本的msyql,所以此次安裝的是MySQL 8.0版本。
安裝步驟有:更新安裝包-》安裝MySQL-》設(shè)置mysql為開(kāi)啟啟動(dòng)-》修改密碼-》設(shè)置遠(yuǎn)程訪(fǎng)問(wèn)-》開(kāi)放3306端口-》使用navicat鏈接MySQL-》修改3306端口-》修改支持group by查詢(xún)-》修改MySQL數(shù)據(jù)保存路徑。
其中后面的4個(gè)步驟可以根據(jù)自己的需求選擇性操作,前面6個(gè)步驟已經(jīng)安裝好MySQL。
更新安裝包
命令:sudo apt-get update
安裝 mysql數(shù)據(jù)庫(kù)
命令:sudo apt-get install mysql-server
安裝過(guò)程提示時(shí)輸入y并回車(chē)
查看是否安裝成功
命令:mysql --verison,顯示mysql版本號(hào)代表msyql已經(jīng)安裝成功
#啟動(dòng)mysql命令如下 (停止mysql的命令為:sudo service mysql stop)
命令:sudo service mysql start
#查看mysql的啟動(dòng)狀態(tài)
命令:sudo service mysql status
active(running)代表已經(jīng)啟動(dòng),其他代表未啟動(dòng)。
設(shè)置mysql為開(kāi)機(jī)自啟
命令:sudo systemctl enable?mysql
修改密碼
因?yàn)榘惭bMySQL初始化是沒(méi)有密碼的,我們需要修改密碼,msyql的默認(rèn)賬號(hào)是root.
登錄mysql的控制臺(tái)
命令:mysql -u root -p,第一次登錄沒(méi)有密碼,直接回車(chē)
#進(jìn)入mysql,使用mysql database,用戶(hù)信息在mysql database
sql:use mysql;
#查看需要修改的root用戶(hù)數(shù)據(jù)
sql:select host, user, authentication_string from user;
#為root賬號(hào)賦權(quán)
sql:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '設(shè)置新的密碼';
#刷新權(quán)限
sql:FLUSH PRIVILEGES;
#退出mysql控制臺(tái)
sql:exit;
重新登錄MySQL,不輸入密碼或者密碼錯(cuò)誤時(shí)
輸入正確的密碼登錄成功
設(shè)置遠(yuǎn)程訪(fǎng)問(wèn)登錄
如果不設(shè)置遠(yuǎn)程訪(fǎng)問(wèn)登錄,那么只有安裝MySQL的本機(jī)才能訪(fǎng)問(wèn)MySQL。3個(gè)小步驟。
①設(shè)置賬號(hào)權(quán)限,設(shè)置root賬號(hào)可以在所有的ip中都能登錄
#進(jìn)入mysql
sql:use mysql;
#設(shè)置登錄ip為%通配符,取消登錄ip限制,原來(lái)的localhost代表只能在本機(jī)登錄。
sql:update user set host = '%' where user = 'root' and host = 'localhost';
#刷新權(quán)限
sql:FLUSH PRIVILEGES;
#查看數(shù)據(jù)情況
sql:select host, user, authentication_string from user;
#退出mysql控制臺(tái)
sql:exit;
②修改配置文件
修改mysql配置文件/etc/mysql/mysql.conf.d/mysqld.cnf,取消對(duì)遠(yuǎn)程ip為127.0.0.1的綁定,不取消127.0.0.1的綁定那么只有本機(jī)才能訪(fǎng)問(wèn)。
在mysqld.cnf文件里將bind-address、mysqlx-bind-address這兩行注釋掉
命令:vim /etc/mysql/mysql.conf.d/mysqld.cnf
③重啟mysql
#重啟mysql
命令:service mysql restart
防火墻開(kāi)放3306端口
如果是云服務(wù)器,還需要在安全組中開(kāi)放3306端口
#服務(wù)器防火墻開(kāi)放3306端口
命令:sudo ufw allow 3306/tcp
使用Navicat 鏈接MySQL
測(cè)試鏈接失敗,阿里云服務(wù)器要開(kāi)放3306端口,登錄阿里云服務(wù)器官網(wǎng),設(shè)置開(kāi)發(fā)3306端口
開(kāi)放后測(cè)試鏈接
修改3306端口
3306是MySQL很常用的端口,為了避免被黑,我們修改一個(gè)不常用的端口
# 1.停止MySQL服務(wù)
命令:sudo service mysql stop
# 2.修改my.cnf配置文件
命令:vim /etc/mysql/mysql.conf.d/mysqld.cnf
改為3136
啟動(dòng)MySQL 驗(yàn)證是否啟用
命令:service mysql start
查看MySQL啟用狀態(tài)
命令:service mysql status
截圖的active(running)代表啟用狀態(tài)
測(cè)試鏈接,注意和上面以免需要到云服務(wù)上放開(kāi)3136端口,鏈接成功
修改支持group by
MySQL高版本不支持group by的查詢(xún),但是我們實(shí)際使用過(guò)程中使用到group by。
報(bào)錯(cuò):1055 - Expression #11 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'ies.ca.country' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
處理:在配置文件(my.cnf)中修改 sql_mode 的配置(在/etc/my.cnf路徑下)并重啟mysql服務(wù)。
命令:vim mysqld.cnf,將下面這句復(fù)制粘貼進(jìn)文件最后面
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
命令:cat mysqld.cnf查看是否修改成功
重啟MySQL
先停止MySQL service mysql stop
啟動(dòng)MySQL service mysql start
驗(yàn)證,查詢(xún)SQL有結(jié)果,修改成功
修改MySQL數(shù)據(jù)保存路徑
MySQL默認(rèn)安裝在/var/lib/mysql,數(shù)據(jù)也是在這個(gè)目錄下,為了數(shù)據(jù)安全和系統(tǒng)盤(pán)空間小存放不了大量數(shù)據(jù)的問(wèn)題,需要將MySQL遷移到數(shù)據(jù)盤(pán)。遷移之前可以使用show variables like '%dir%';MySQL語(yǔ)句查看MySQL數(shù)據(jù)路徑。
datadir的值為/var/lib/mysql/即為當(dāng)前數(shù)據(jù)庫(kù)文件存放目錄。
basedir參數(shù)表示mysql數(shù)據(jù)庫(kù)的安裝位置,遷移數(shù)據(jù)庫(kù)文件位置不需要改動(dòng)這個(gè)參數(shù)。
新建MySQL數(shù)據(jù)的目錄
cd /app/mysql
mkdir data
給新建的文件夾授權(quán),命令sudo chmod 755 /app/mysql/data
遷移數(shù)據(jù)
將原來(lái)MySQL的數(shù)據(jù)遷移到新的MySQL數(shù)據(jù)目錄,遷移前先停止MySQL,命令:service mysql stop(或者使用原始命令/etc/init.d/mysql stop)
將MySQL數(shù)據(jù)復(fù)制到數(shù)據(jù)盤(pán)MySQL數(shù)據(jù)目錄下
命令:sudo cp -a /var/lib/mysql /app/mysql/data/
注:由于/var/lib/mysql目錄歸屬于mysql數(shù)據(jù)庫(kù)創(chuàng)建的mysql用戶(hù)和mysql用戶(hù)組,所以遷移文件的時(shí)候需要使用root權(quán)限,命令要使用sudo
修改配置文件
一共修改3個(gè)文件
查找my.cnf文件
mysql數(shù)據(jù)庫(kù)會(huì)按順序優(yōu)先級(jí)從/etc/my.cnf、/etc/mysql/my.cnf、/usr/etc/my.cnf、~/.my.cnf四個(gè)位置找my.cnf配置文件,一旦找到就不再繼續(xù)往下找。Ubuntu默認(rèn)將my.cnf配置文件放在/etc/mysql/my.cnf位置,所以在/etc/my.cnf位置沒(méi)有找到這個(gè)配置文件。找到配置文件將其中[mysqld]標(biāo)簽下的datadir屬性值改為新數(shù)據(jù)庫(kù)目錄路徑/app/mysql/data/mysql
先試用cat /etc/mysql/my.cnf 文件并沒(méi)有看到datadir等路徑,而是引用了!includedir /etc/mysql/conf.d/和!includedir /etc/mysql/mysql.conf.d/
我們進(jìn)去看conf.d文件,如下截圖我們看到conf.d是個(gè)文件夾,而且里面的mysql.cnf和mysqldump.cnf都沒(méi)有配置datadir等路徑的內(nèi)容。
我們繼續(xù)看/etc/mysql/mysql.conf.d/,我們看到mysql.conf.d里面有mysql.cnf和mysqld.cnf,而mysql.conf并沒(méi)有配置內(nèi)容,mysqld.cnf正是上面我們配置端口修改的配置文件
修改mysqld.cnf
命令:vim /etc/mysql/mysql.conf.d/mysqld.cnf
修改后
修改usr.sbin.mysqld文件
命令:sudo vim /etc/apparmor.d/usr.sbin.mysqld
修改后:
修改/etc/apparmor.d/abstractions/mysql文件
命令:sudo vim /etc/apparmor.d/abstractions/mysql
修改后重新加載MySQL配置
命令:sudo /etc/init.d/apparmor restart???????
柚子快報(bào)邀請(qǐng)碼778899分享:ubuntu MySQL的安裝
相關(guān)文章
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。