安裝步驟
1.下載軟件包,安裝依賴環境
2.安裝mysql服務器
3.基礎安裝路徑,創用戶,與權限
4.初始化
5.添加環境變量,把服務放到開機自啟里面
6.啟動mysql服務器
7.獲取初始密碼并且修改
一,下載軟件(yum,源碼,二進制安裝,shell腳本安裝,容器化安裝(docker一鍵安裝))
1.下載mysql
https://downloads.mysql.com/archives/community/
2.二進制安裝
2.1指定安裝
將mysql安裝到/usr/local/mysql目錄中:
做# Centos7安裝依賴
yum install -y libaio libaio-devel ncurses ncurses-devel openssl openssl-devel# Ubuntu22.04 安裝依賴
sudo apt update
sudo apt install -y libaio1 libaio-dev libtinfo5 libncurses-dev libncurses5 libncurses5-dev libncursesw5 libncursesw5-dev libssl-dev
或者
apt install mysql-server
mysqladmin -u root password
后直接用# 下載MySQL二進制安裝包
# 官網下載
# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz#自己拖包進去
# 局域網內下載
wget http://192.168.56.200/Software/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz做# 解壓
tar -xvf mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz #校驗是否正確 與官方的對比
md5sum 安裝包做#將mysql文件剪切并改名,建議的安裝路徑/usr/local下
mv mysql-8.0.20-linux-glibc2.12-x86_64 /usr/local/mysql做# 不建議用root用戶弄數據庫所以我們這里,創建mysql用戶
useradd mysql -M -s /sbin/nologin做# 創建數據庫文件夾
# data文件夾是用于存儲數據庫文件,他的位置是在mysql目錄下
mkdir /usr/local/mysql/data做# 更改mysql目錄權限
chown mysql:mysql -R /usr/local/mysql
校驗對比,這里安裝的是通用版本,適配所有
2.2編譯安裝
yum -y install ncurses-devel #安裝依賴環境
yum -y install perl perl-devel perl-DBD* #看情況安裝(安了開發環境就不用了)
拖包
解壓縮cmake,并使用cmake工具進行編譯安裝(其實yum裝的cmake也能用)
tar -zxvf ... -C /usr/src
cd ...
./configure
gmake && gmake install
安裝完成
3.1初始化數據庫:
做#修改MySQL配置文件?
vim /etc/my.cnf原有的配置文件不用管全刪[mysqld]
port = 3306
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
log-error = /usr/local/mysql/data/error.log
pid-file = /usr/local/mysql/data/mysql.pid
socket = /tmp/mysql.sock
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
default-storage-engine=InnoDB
default-authentication-plugin=mysql_native_password
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
sql_mode=NO_ENGINE_SUBSTITUTION:這個設置要求 MySQL 在遇到存儲引擎不可用時,直接報錯而不是替換成其他可用的存儲引擎。
STRICT_TRANS_TABLES:這個設置要求 MySQL 嚴格遵循事務安全的規則,對于事務中出現警告或錯誤的操作會導致整個事務回滾。
通過設置這些 SQL 模式,可以幫助確保數據庫的數據完整性和一致性,提高數據庫操作的準確性和安全性。
做#執行初始化,生成系統自帶的初始化數據。
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
做執行完后查看初始密碼:
cat /usr/local/mysql/data/error.log
最后一行會顯示密碼
2025-08-01T01:56:40.744889Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: 2VCPj4h!qer(
例如這個,里面的初始密碼就是2VCPj4h!qer(
做4.1第一次啟動mysql服務(使用官方自帶的啟動腳本)
/usr/local/mysql/support-files/mysql.server start
執行完上面命令后會有提示
Starting MySQL... SUCCESS!
之后可以將啟動腳本復制到/etc/init.d/目錄,這是啟動腳本的默認目錄。
啟動MySQl本質執行的是mysqld命令
ps -aux|grep mysqld
查看是否啟動
關閉mysql本質是kill mysqld的pid
做 啟動(為方便以后命令啟用)
另一種把啟動命令放到環境變量里面
修改系統環境變量
想要在任意目錄執行mysql的命令需要修改/etc/profile(這個文件里寫的是重要的環境變量,用于設置全局的環境變量和啟動腳本:補充
環境變量設置
- PATH 變量:用于指定命令的搜索路徑。系統會在這些路徑中查找用戶輸入的命令,例如在?
/etc/profile
?中可能會看到類似?PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
?的設置,將常用的命令目錄添加到搜索路徑中。)
做
vim /etc/profile
在最后一行添加指定PATH關聯MySQL的bin目錄
export PATH=$PATH:/usr/local/mysql/bin
配置完成后讓系統重新加載/etc/profie文件
source /etc/profile
如何驗證上面內容做成功了呢?
他沒有顯示沒有這個命令就是已經將命令加入環境變量中了。這里報錯原因是沒有輸root的密碼
我們可以通過 ,登錄成功
mysql -u root -p'2VCPj4h!qer(' #把剛剛的密碼粘貼上去 加單引號'
四、獲取初始密碼
5.2修改root密碼
5.2.2.使用隨機密碼登錄到MySQL中修改
mysql -uroot -p
Enter password:初始密碼 自己在cat /usr/local/mysql/data/error.log這里找
做# 修改密碼
mysql> alter user 'root'@'localhost' identified by '123.com';
Query OK, 0 rows affected (0.05 sec)
可以通過自己改的密碼登錄,就是成功了
不做5.2.1使用mysqladmin命令修改密碼
Mysql安裝成功后,默認的密碼為隨機密碼,你可以使用以下命令來創建新的root用戶的密碼:
mysqladmin -u root -p password "root123"
Enter password:初始密碼
現在你可以通過以下命令來連接到Mysql服務器:mysql -u root -p
Enter password:*******
注意:在輸入密碼時,密碼是不會顯示了,你正確輸入即可。
不做 如果密碼錯了或者修改失敗后可以進行5.2.3.MySQL重新初始化
安裝時初始化失敗或初始密碼遺失時可以重新初始化
# 刪除 /usr/local/mysql/data目錄中數據
rm -rf /usr/local/mysql/data/
mkdir /usr/local/mysql/data
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
cd /usr/local/mysql
cat data/error.log# 方法一:
mysqladmin -uroot -p password "root123"
初始密碼# 方法二:
mysql -uroot -p
初始密碼
mysql> alter user 'root'@'localhost' identified by 'root123';
Query OK, 0 rows affected (0.05 sec)
不做? 5.2.4.跳過MySQL的root密碼直接登錄
忘記root密碼時,可以使用該方法
vim /etc/my.cnf[mysqld]
# 配置的最后添加,跳過密碼登錄的功能
skip-grant-tables# 重啟服務
systemctl restart mysqld
mysql -urootmysql>flush privileges;
Query OK, 0 rows affected (0.05 sec)
mysql>alter user 'root'@'localhost' identified by 'root123';
Query OK, 0 rows affected (0.05 sec)
mysql>\q
# 密碼修改成功后,必須在配置文件中刪除或注釋掉skip-grant-tables# 然后重啟服務
systemctl restart mysqld
?做? 開機自啟用systemcl來控制mysql
開機啟動、啟動、停止、重啟、
# 1.方法使用默認啟動腳本的路徑支持 start 啟動 |stop 停止 |restart 重啟
/usr/local/mysql/support-files/mysql.server restart# 2./etc/ini.d/mysqld
# 將啟動腳本復制到/etc/init.d/目錄,這是啟動腳本的默認目錄。
cp -a /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld# -a 參數保留原有權限
# 測試重啟
/etc/init.d/mysqld restart# 3.service
# 配置好/etc/ini.d/mysqld后可以使用service命令管理服務
service mysqld restart# 4.systemctl
# 配置mysqld開機啟動后,可以使用systemctl管理mysqld
systemctl enable mysqld
systemctl restart mysqld
systemctl status mysqld
不做6.1設置遠程連接
查看數據庫的用戶權限配置基礎信息。
生產環境不推薦開放root用戶的遠程登錄權限;
# 登錄MySQL mysql -uroot -proot123# 創建遠程登錄賬號 mysql> create user 'root'@'%' identified with mysql_native_password by 'root123'; Query OK, 0 rows affected (0.01 sec)# 設置開放權限 mysql> grant all on *.* to 'root'@'%'; Query OK, 0 rows affected (0.00 sec)# 刷新使權限生效 mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
%:代表所有主機,允許root登錄所有主機
identified:認證授權
mysql_native_password:密碼的一種認證方式,用于兼容低版本的mysql
grant:授權
遇到問題:
?Can’t connect to MySQL server on ‘192.168.8.20’ (61)?
解決方法:
# 關閉防火墻
systemctl stop firewalld.service
firewall-cmd --state
驗證:
在linux客戶端安裝mariadb
yum -y install? mariadb
mysql -u root -p 123.com -h 192.168.1.10(MySQL服務器的ip)
在ubuntu客戶端
apt install mysql-client
mysql -u root -p 123.com -h 192.168.1.10(MySQL服務器的ip)
apt install? mycli? ? ? ? ? ? ? ?#更強大的一種客戶端 有提示
mycli?-u root -p 123.com -h ”192.168.1.10“(MySQL服務器的ip)
圖形化:
phpmyadmin
如果你是使用apt直接安裝的mysql那么還需要在配置文件中允許遠程訪問
# 打開mysql配置文件。
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
# [mysqld] 表示服務端設置
[mysqld]
# 注釋下列內容(31行)
# bind-address = 127.0.0.1
# mysqlx-bind-address = 127.0.0.1# 重新設置bind-address
bind-address = 0.0.0.0# 重啟MySQL
sudo systemctl restart mysql# 檢查3306端口是否為 0.0.0.0:3306
ss -lnutp|grep 3306
navicat?
這里的用戶名和密碼,就是
create user 'root'@'%' identified with mysql_native_password by 'root123';
和這里的一樣。
連接成功后就是這個樣子的。
不做? 7.1mysql卸載步驟(了解)
# 停止mysql服務
/etc/init.d/mysqld stop
Shutting down MySQL.... SUCCESS!# 或者使用systemctl停止
systemctl stop mysqld# 查找所有mysql相關文件夾
find / -name mysql
不做
# 刪除所有查出來的文件夾
rm -rf /var/lib/selinux/targeted/active/modules/100/mysql
......# 刪除配置文件
# 配置文件一般有/etc/my.cnf 或/etc/init.d/mysql.server,rm -f /etc/my.cnf
rm -rf /etc/init.d/mysqld# 刪除用戶組userdel mysql
id mysqlid: “mysql”:無此用戶
編譯安裝步驟
編譯安裝mysql
yum -y install ncurses-devel #安裝依賴環境
yum -y install perl perl-devel perl-DBD* #看情況安裝(安了開發環境就不用了)
拖包
安裝完成
創建用戶和組
groupadd mysql
useradd -M -s /sbin/nologin mysql -g mysql
tar -zxvf mysql-5.6.36.tar.gz -C /usr/src/
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql #指定安裝目錄
-DSYSCONFDIR=/etc #指定初始化參數文件目錄 #/etc/my.cnf
-DDEFAULT_CHARSET=utf8 #指定默認使用的字符集編碼
-DDEFAULT_COLLATION=utf8_general_ci #指定默認使用的字符集校對規則,utf8_general_ci是適用于utf-8字符集的通用規則
-DWITH_EXTRA_CHARSETS=all #指定額外支持的其他字符集
make && make install
安裝完成
更改目錄的屬主屬組
chown -R mysql:mysql /usr/local/mysql
建立配置文件
rm -rf /etc/my.cnf #Centos7默認支持Mariadb,系統默認的my.cnf會和mysql沖突,
cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf #再將mysql安裝包里的默認配置替換過去
初始化
/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/ #初始化數據庫,用mysql的身份執行初始化腳本install_db,指定各種目錄
初始化成功
設置變量環境,讓我們mysql的命令可以在任何目錄下使用
方法一:
echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
查看一下
/etc/profile文件為系統的每個用戶設置環境變量信息,此文件的修改會影響到所有用戶。
我們會發現最后一行多出了以上內容,$PATH變量定義了運行命令的查找路徑
給予運行權限,并執行,我們就可以在任何地方使用mysql的命令了。
source /etc/profile #作用:在當前bash環境下讀取并執行文件中的命令。
方法二:
ln -s /usr/local/mysql/bin/* /usr/local/bin/
兩種方法均可達成結果
使用systemctl控制mysql
cp /usr/src/mysql-5.6.36/support-files/mysql.server /etc/rc.d/init.d/mysqld #復制源文件中的服務文件到rc.d/init.d/下
chmod a+x /etc/rc.d/init.d/mysqld #給予權限
chkconfig --add mysqld #加入服務
chkconfig mysqld on #啟動服務
為什么和apache的鏈接位置不同呢?其實init.d是rc.d/init.d/的一個軟鏈接目錄,倆目錄一樣
添加完成后就可以通過systemctl來控制開關了
添加到系統服務
vim /usr/lib/systemd/system/mysqld.service
[Unit]
Description=Mysql server
After=network.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE=5000
[Install]
WantedBy=multi-user.target
復制粘貼即可
就可以將mysqld設置為開機自啟了
查看服務端口
netstat -anput | grep mysql
設置密碼(第一次)
mysqladmin -u root password
修改密碼
mysqladmin -u root -p password
明文修改密碼,其中的警告指的是密碼明文有危險
正常登錄
mysql -u root -p