16.1 MySQL簡介
MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由瑞典MySQL AB 公司開發(fā),屬于 Oracle 旗下產(chǎn)品。MySQL 是最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)之一,在 WEB 應(yīng)用方面,MySQL是最好的 RDBMS (Relational Database Management System,關(guān)系數(shù)據(jù)庫管理系統(tǒng)) 應(yīng)用軟件之一。
MySQL是一種關(guān)系型數(shù)據(jù)庫管理系統(tǒng),關(guān)系數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個(gè)大倉庫內(nèi),這樣就增加了速度并提高了靈活性。
MySQL所使用的 SQL 語言是用于訪問數(shù)據(jù)庫的最常用標(biāo)準(zhǔn)化語言。MySQL 軟件采用了雙授權(quán)政策,分為社區(qū)版和商業(yè)版,由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點(diǎn),一般中小型和大型網(wǎng)站的開發(fā)都選擇 MySQL 作為網(wǎng)站數(shù)據(jù)庫。
16.2 MySQL版本
MySQL分社區(qū)版和商業(yè)版,社區(qū)版也就是開源版本,完全免費(fèi),而商業(yè)版要比社區(qū)版多了一些商業(yè)定制功能,需要收費(fèi)。而本教程中介紹的是社區(qū)版。
目前MySQL社區(qū)版有兩個(gè)主流活躍版本:5.7和8.0。據(jù)我觀察,MySQL每隔3個(gè)月就會發(fā)一個(gè)小版本,更新迭代速度非???。
截至阿銘發(fā)表此文章時(shí),5.7最新版本為5.7.40,而8.0最新版本為8.0.31。由于個(gè)別應(yīng)用開發(fā)環(huán)境使用的是5.7.x,所以我們只能使用5.7.x版本的MySQL。如果沒有特殊要求,一定要用8.0,因?yàn)?.0版本的MySQL要比5.7快不少。
本教程中,阿銘使用的是8.0.31。5.7版本和8.0版本在使用上稍有差異,但差異不太大。
16.3MySQL安裝(Centos/Rocky/Ubuntu都一樣)
1)下載
cd /usr/local curl -O https://cdn.mysql.com/Downloads/MySQL-8.0/mysql-8.0.31-linux-glibc2.12-x86_64.tar.xz
2)解壓
tarJxfmysql-8.0.31-linux-glibc2.12-x86_64.tar.xz ln-smysql-8.0.31-linux-glibc2.12-x86_64mysql
3)創(chuàng)建用戶
useradd -s /sbin/nologin mysql
4)創(chuàng)建數(shù)據(jù)目錄
mkdir-p/data/mysql chown-Rmysql:mysql/data/mysql
5)定義配置文件
vi /etc/my.cnf #寫入如下內(nèi)容 [mysql] port = 3306 socket = /tmp/mysql.sock [mysqld] user = mysql port = 3306 basedir = /usr/local/mysql datadir = /data/mysql socket = /tmp/mysql.sock pid-file = /data/mysql/mysqld.pid log-error = /data/mysql/mysql.err
6)安裝依賴
##Rocky / CentOS yum install -y ncurses-compat-libs-6.1-9.20180224.el8.x86_64 libaio-devel ## Ubuntu sudo apt install libaio-dev libtinfo5
7)初始化
/usr/local/mysql/bin/mysqld --console --initialize-insecure --user=mysql ## initialize-insecure使用空密碼
8)啟動(dòng)
vi/usr/lib/systemd/system/mysqld.service#寫如下內(nèi)容 [Unit] Description=MYSQL server After=network.target [Install] WantedBy=multi-user.target [Service] Type=forking TimeoutSec=0 PermissionsStartOnly=true ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --daemonize $OPTIONS ExecReload=/bin/kill -HUP -$MAINPID #這里-HUP可以是改成-s HUP,就變成強(qiáng)制殺進(jìn)程,有需要可以改,下面也一樣 ExecStop=/bin/kill -QUIT $MAINPID #-s QUIT是強(qiáng)制殺進(jìn)程 KillMode=process LimitNOFILE=65535 Restart=on-failure RestartSec=10 RestartPreventExitStatus=1 PrivateTmp=false
重新加載并啟動(dòng)服務(wù)
sudo systemctl daemon-reload sudo systemctl enable mysqld sudo systemctl start mysqld
9)配置環(huán)境變量
vi /etc/profile #最后面增加下面一行內(nèi)容 export PATH=$PATH:/usr/local/mysql/bin
然后執(zhí)行下面命令,使其生效
sudo source /etc/profile
10)設(shè)置密碼
mysqladmin -uroot password 'your_new_passwd'
16.4 重置MySQL root密碼
MySQL root為管理員用戶,如果root用戶密碼忘記,我們是有方法來重置的。
修改配置文件
vi /etc/my.cnf #增加skip-grant-tables
重啟mysql服務(wù)
systemctl restart mysqld
登錄MySQL
mysql -uroot
在MySQL命令行里執(zhí)行:
mysql> usemysql; mysql> UPDATEuserSETauthentication_string=""WHEREuser="root";##這里就是要?jiǎng)h除掉原來密碼
再次修改配置文件
vi /etc/my.cnf #刪除skip-grant-tables 參數(shù)
重啟服務(wù)
systemctl restart mysqld
再次登錄MySQL
mysql -uroot
在MySQL命令行里,重置密碼
mysql> usemysql; mysql> ALTERUSER'root'@'localhost'IDENTIFIEDWITHmysql_native_passwordBY'Aminglinux.com'; mysql> flush privileges;
16.5 連接MySQL
1)連接本機(jī)的MySQL
mysql-uroot-pAminglinux.com#-p后面跟密碼,如果有特殊符號要帶單引號,-p后面不用帶空格
2)連接遠(yuǎn)程機(jī)器
mysql-uroot-pAminglinux.com-h127.0.0.1-P3306#-P后面跟端口號
3)使用socket文件連接(本地)
mysql-uroot-pAminglinux.com-S/tmp/mysql.sock#-S后面g跟socket文件路徑
4)直接在shell里運(yùn)行MySQL命令
mysql-uroot-pAminglinux.com-e"showdatabases"#-e后面跟要運(yùn)行的命
16.6MySQL常用命令
1)查詢庫
mysql> show databases;
2)切換庫
mysql> use mysql;
3)查看庫里的表
mysql> show tables;
4)查看表里的字段
mysql> desc tb_name;
5)查看建表語句
show create table tb_nameG
6)查看當(dāng)前用戶
mysql> select user();
7)查看當(dāng)前使用的數(shù)據(jù)庫
mysql> select database();
8)創(chuàng)建庫
mysql> create database db1;
9)創(chuàng)建表
mysql> use db1; create table t1(`id` int(4), `name` char(40));
10)查看當(dāng)前數(shù)據(jù)庫版本
mysql> select version();
11)查看數(shù)據(jù)庫狀態(tài)
mysql> show status;
12)查看各參數(shù)
mysql> show variables; #查看所有參數(shù) mysql>showvariableslike'max_connect%';#過濾關(guān)鍵詞
13)修改參數(shù)
mysql>setglobalmax_connect_errors=1000;#設(shè)置指定參數(shù)
14)查看隊(duì)列
mysql> show processlist; mysql>showfullprocesslist;#顯示的更全
16.7 MySQL創(chuàng)建用戶和授權(quán)
1)創(chuàng)建用戶,客戶端允許為所有
mysql> create user 'user1'@'%' identified by 'Abc.123.com';
2)授權(quán)所有權(quán)限,所有庫,所有表
mysql>grantallon*.*to'user1';#all表示所有權(quán)限(比如,select/update/insert/delete等全部權(quán)限),第一個(gè)*表示所有庫,第二個(gè)*表示所有表
3)創(chuàng)建用戶,客戶端允許某個(gè)IP段
mysql> create user 'user2'@'192.168.133.%' identified by 'passwd';
4)授權(quán)指定權(quán)限
mysql> grant SELECT,UPDATE,INSERT on db1.* to 'user2'@'192.168.133.1';
5)查看授權(quán)情況
mysql> show grants; mysql> showgrantsforuser2@192.168.133.1;
16.8常用sql語句
SQL是關(guān)系型數(shù)據(jù)庫的核心,除了MySQL外,其它關(guān)系型數(shù)據(jù)庫也是用這些SQL。下面阿銘就給大家列幾個(gè)最常用的SQL命令。
mysql>selectcount(*)frommysql.user;#查表的行數(shù) mysql> select * from mysql.db; #查表的所有內(nèi)容 mysql> select db from mysql.db; #查看db表里db列內(nèi)容 mysql> select db,user from mysql.db; #查看多列 mysql> select * from mysql.db where host like '192.168.%'; #查看表內(nèi)容,設(shè)定條件 mysql> insert into db1.t1 values (1, 'abc'); #插入數(shù)據(jù) mysql> update db1.t1 set name='aaa' where id=1; #插入數(shù)據(jù),帶條件 mysql>truncatetabledb1.t1; #清空表 mysql> drop table db1.t1; #刪除表 mysql> drop database db1; #刪除庫
16.9 mysql數(shù)據(jù)庫備份和恢復(fù)
1)備份庫
mysqldump -uroot -pAminglinux.com mysql > /tmp/mysql.sql
2)恢復(fù)庫
mysql -uroot -pAminglinux.com mysql < /tmp/mysql.sql
3)備份表
mysqldump -uroot -pAminglinux.com mysql user > /tmp/user.sql
4)恢復(fù)表
mysql -uroot -pAminglinux.com mysql < /tmp/user.sql
5)備份所有庫
mysqldump -uroot -p -A >/tmp/123.sql
6)備份指定庫
mysqldump -uroot -p -B db1 db2 > /tmp/db1_db2.sql
7)只備份表結(jié)構(gòu)
mysqldump -uroot -pAminglinux.com -d mysql > /tmp/mysql.sql
-
數(shù)據(jù)庫
+關(guān)注
關(guān)注
7文章
3799瀏覽量
64389 -
管理系統(tǒng)
+關(guān)注
關(guān)注
1文章
2498瀏覽量
35924 -
MySQL
+關(guān)注
關(guān)注
1文章
809瀏覽量
26569
原文標(biāo)題:MySQL簡易入門教程
文章出處:【微信號:aming_linux,微信公眾號:阿銘linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論