日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

MySQL基础(一)介绍和配置

發(fā)布時(shí)間:2025/3/17 数据库 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL基础(一)介绍和配置 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

了解數(shù)據(jù)庫(kù)

基本概念

數(shù)據(jù)庫(kù)(database)

數(shù)據(jù)庫(kù)是一個(gè)以某種有組織的方式存儲(chǔ)的數(shù)據(jù)集合,可以將它想象為一個(gè)文件柜。只不過(guò)它是在計(jì)算機(jī)的存儲(chǔ)設(shè)備上,按照一定的數(shù)據(jù)模型組織、描述和儲(chǔ)存,具有較小的冗余度、較高的數(shù)據(jù)獨(dú)立性和易擴(kuò)展性,并可為各種用戶共享。

數(shù)據(jù)庫(kù)管理系統(tǒng)DMBS (Database Management System)

也就是數(shù)據(jù)庫(kù)軟件,用于創(chuàng)建、操作、維護(hù)數(shù)據(jù)庫(kù)用的,比如MySQL, oracle, Access等

關(guān)系型數(shù)據(jù)庫(kù)(RDBMS)

關(guān)系型數(shù)據(jù)庫(kù)需要有表結(jié)構(gòu),使用SQL作為查詢語(yǔ)言

比如:SQLite , MySQL, DB2, Oracle, Access, SQL Server 等

非關(guān)系型數(shù)據(jù)庫(kù)(NoSQL)

NoSQL(Not Only SQL) 非關(guān)系型數(shù)據(jù)庫(kù),是對(duì)不同于傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)管理系統(tǒng)的統(tǒng)稱。近年比較火,比起關(guān)系型數(shù)據(jù)庫(kù),性能優(yōu)勢(shì)突出。主要特點(diǎn)是不使用SQL作為查詢語(yǔ)言,不需要表結(jié)構(gòu)。比如我們常用的Redis,就是NoSQL的一種,它按照 key/value RAM 存儲(chǔ)。NoSQL更多分類參考這里

數(shù)據(jù)庫(kù)服務(wù)器

就是一臺(tái)運(yùn)行數(shù)據(jù)庫(kù)管理系統(tǒng)的計(jì)算機(jī)(對(duì)內(nèi)存要求比較高)

表(table)

某種特定類型數(shù)據(jù)的結(jié)構(gòu)化清單,相當(dāng)于文件柜中的文件。數(shù)據(jù)庫(kù)中的每張表都必須有唯一的表名來(lái)標(biāo)識(shí)自己,比如顧客表,產(chǎn)品表,訂單表等。

列(column)

也稱為表字段(field),表中的每一列存儲(chǔ)著某種特定的信息。比如在顧客表中,一列存儲(chǔ)顧客的編號(hào),另一列存儲(chǔ)顧客的姓名,地址,電話等信息也都存儲(chǔ)在各自的列中。表中的列名(字段名)不能重復(fù)。

行(row)

也稱為表記錄(record),表中的數(shù)據(jù)是按行存儲(chǔ)的。比如顧客表的每行存儲(chǔ)一個(gè)顧客。

主鍵(primary key)

用來(lái)唯一標(biāo)識(shí)表中的一行的列稱為主鍵。比如顧客表可以使用顧客編號(hào),訂單表可以使用訂單ID。

SQL

結(jié)構(gòu)化查詢語(yǔ)言(Structured Query Language),是一種專門用來(lái)和數(shù)據(jù)庫(kù)溝通的語(yǔ)言,用于關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)。

具有如下特點(diǎn):
  • 幾乎所有的DBMS都支持SQL,學(xué)習(xí)它使你幾乎能和任何數(shù)據(jù)庫(kù)打交道。
  • 簡(jiǎn)單易學(xué),只由很少的描述性很強(qiáng)的英語(yǔ)單詞(關(guān)鍵字)組成
  • 功能強(qiáng)大。雖然語(yǔ)法簡(jiǎn)單,但是靈活使用可以進(jìn)行非常復(fù)雜和高級(jí)的數(shù)據(jù)庫(kù)操作。
SQL語(yǔ)言包括三種類型:
  • DDL:數(shù)據(jù)庫(kù)定義語(yǔ)言(data definition language),主要的命令有CREATE(創(chuàng)建)、ALTER(修改)、DROP(刪除)等,用于數(shù)據(jù)庫(kù)、表、視圖、索引、存儲(chǔ)過(guò)程的定義和管理。
  • DML:數(shù)據(jù)庫(kù)操作語(yǔ)言(data manipulation language),對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)進(jìn)行操作,比如SELECT(查詢)、UPDATE(更新)、INSERT(插入)、DELETE(刪除)。
  • DCL:數(shù)據(jù)庫(kù)控制語(yǔ)言(data control language),用來(lái)控制用戶權(quán)限,比如GRANT(授權(quán)), REVOKE(回收權(quán)限)。
SQL語(yǔ)句書(shū)寫(xiě)規(guī)范
  • 不區(qū)分大寫(xiě),為了提高可讀性,通常將關(guān)鍵字大寫(xiě)
  • 每條SQL語(yǔ)句以;分號(hào)作為結(jié)束符
  • 注釋方式:
    • -- 單行注釋
    • /* 多行注釋 */
    • #,在一行的開(kāi)始處使用,這一整行都將作為注釋,較少使用
  • 子句另起一行,更易于閱讀和調(diào)試

其它

更多概念將在后面數(shù)據(jù)庫(kù)的具體使用中了解,比如外鍵,索引等。

MySQL

MySQL是開(kāi)源的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由瑞典MySQL AB 公司開(kāi)發(fā),目前屬于 Oracle 旗下公司。由于性能高、成本低、可靠性好,已經(jīng)成為最流行的開(kāi)源數(shù)據(jù)庫(kù)。

被甲骨文公司收購(gòu)后,Oracle大幅調(diào)漲MySQL商業(yè)版的售價(jià),且甲骨文公司不再支持另一個(gè)自由軟件項(xiàng)目OpenSolaris的發(fā)展,因此導(dǎo)致自由軟件社區(qū)們對(duì)于Oracle是否還會(huì)持續(xù)支持MySQL社區(qū)版(MySQL之中唯一的免費(fèi)版本)有所隱憂,MySQL的創(chuàng)始人麥克爾·維德紐斯以MySQL為基礎(chǔ),成立分支計(jì)劃MariaDB。而原先一些使用MySQL的開(kāi)源軟件逐漸轉(zhuǎn)向MariaDB或其它的數(shù)據(jù)庫(kù)。例如維基百科已于2013年正式宣布將從MySQL遷移到MariaDB數(shù)據(jù)庫(kù)[2]。

安裝和配置

MySQL本質(zhì)是基于socket的c/s架構(gòu)的軟件,因此分為客戶端(mysql)和服務(wù)端(mysqld)。這部分用的大昆的,歡迎大家去點(diǎn)贊評(píng)論~

注意:Linux系統(tǒng)下的配置文件是my.cnf,windows下的是my.ini,只是擴(kuò)展名不一樣,其它都是一樣的。

Linux

二進(jìn)制rpm包安裝

yum -y install mysql-server mysql

源碼安裝MySQL

解壓tar包
cd /software tar -xzvf mysql-5.6.21-linux-glibc2.5-x86_64.tar.gz mv mysql-5.6.21-linux-glibc2.5-x86_64 mysql-5.6.21
添加用戶與組
groupadd mysql useradd -r -g mysql mysql chown -R mysql:mysql mysql-5.6.21
安裝數(shù)據(jù)庫(kù)
su mysql cd mysql-5.6.21/scripts ./mysql_install_db --user=mysql --basedir=/software/mysql-5.6.21 -- datadir=/software/mysql-5.6.21/data
配置文件
cd /software/mysql-5.6.21/support-files cp my-default.cnf /etc/my.cnf cp mysql.server /etc/init.d/mysql vim /etc/init.d/mysql #若mysql的安裝目錄是/usr/local/mysql,則可省略此步 # 修改文件中的兩個(gè)變更值,解壓目錄和數(shù)據(jù)目錄 basedir=/software/mysql-5.6.21 datadir=/software/mysql-5.6.21/data
配置環(huán)境變量
vim /etc/profile export MYSQL_HOME="/software/mysql-5.6.21" export PATH="$PATH:$MYSQL_HOME/bin" source /etc/profile
添加自啟動(dòng)服務(wù)
chkconfig --add mysql chkconfig mysql on
啟動(dòng)MySQL
service mysql start
登錄、密碼及遠(yuǎn)程訪問(wèn)
mysqladmin -u root password 'your_password' #修改root用戶密碼 mysql -u root -p #登錄mysql,需要輸入密碼 mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_password' WITH GRANT OPTION; #允許root用戶遠(yuǎn)程訪問(wèn) mysql>FLUSH PRIVILEGES; #刷新權(quán)限

源碼安裝MariaDB

解壓
tar zxvf mariadb-5.5.31-linux-x86_64.tar.gz mv mariadb-5.5.31-linux-x86_64 /usr/local/mysql //必需這樣,很多腳本或可執(zhí)行程序都會(huì)直接訪問(wèn)這個(gè)目錄
權(quán)限
groupadd mysql //增加 mysql 屬組 useradd -g mysql mysql //增加 mysql 用戶 并歸于mysql 屬組 chown mysql:mysql -Rf /usr/local/mysql // 設(shè)置 mysql 目錄的用戶及用戶組歸屬。 chmod +x -Rf /usr/local/mysql //賜予可執(zhí)行權(quán)限
拷貝配置文件
cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf //復(fù)制默認(rèn)mysql配置 文件到/etc目錄
初始化
/usr/local/mysql/scripts/mysql_install_db --user=mysql //初始化數(shù)據(jù)庫(kù) cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql //復(fù)制mysql服務(wù)程序 到系統(tǒng)目錄 chkconfig mysql on //添加mysql 至系統(tǒng)服務(wù)并設(shè)置為開(kāi)機(jī)啟動(dòng) service mysql start //啟動(dòng)mysql
環(huán)境變量配置
vim /etc/profile //編輯profile,將mysql的可執(zhí)行路徑加入系統(tǒng)PATH export PATH=/usr/local/mysql/bin:$PATH source /etc/profile //使PATH生效。
賬號(hào)密碼
mysqladmin -u root password 'yourpassword' //設(shè)定root賬號(hào)及密碼 mysql -u root -p //使用root用戶登錄mysql use mysql //切換至mysql數(shù)據(jù)庫(kù)。 select user,host,password from user; //查看系統(tǒng)權(quán)限 drop user ''@'localhost'; //刪除不安全的賬戶 drop user root@'::1'; drop user root@127.0.0.1; select user,host,password from user; //再次查看系統(tǒng)權(quán)限,確保不安全的賬戶均被刪除。 flush privileges; //刷新權(quán)限
一些必要的初始配置
修改字符集為UTF8
vi /etc/my.cnf 在[client]下面添加 default-character-set = utf8 在[mysqld]下面添加 character_set_server = utf8
增加錯(cuò)誤日志
vi /etc/my.cnf 在[mysqld]下面添加: log-error = /usr/local/mysql/log/error.log general-log-file = /usr/local/mysql/log/mysql.log
設(shè)置為不區(qū)分大小寫(xiě),Linux下默認(rèn)會(huì)區(qū)分大小寫(xiě)。
vi /etc/my.cnf 在[mysqld]下面添加: lower_case_table_name=1

修改完之后重啟服務(wù):service mysql restart

Windows

直接在官網(wǎng)下載安裝包,安裝完成后記得添加環(huán)境變量:將MySQL的bin目錄路徑加入。

初始化

  • 初始化:mysqld --initialize-insecure

  • 啟動(dòng)MySQL服務(wù)器:mysqld

注冊(cè)為服務(wù)

  • 制作MySQL的Windows服務(wù),在終端的目錄下執(zhí)行此命令:

"c:\mysql-5.7.16-winx64\bin\mysqld" --install

  • 移除MySQL的Windows服務(wù),在終端的目錄下執(zhí)行此命令:

"c:\mysql-5.7.16-winx64\bin\mysqld" --remove

啟動(dòng)和關(guān)閉MySQL服務(wù)

注冊(cè)成服務(wù)之后,以后再啟動(dòng)和關(guān)閉MySQL服務(wù)時(shí),僅需執(zhí)行如下命令:

  • 啟動(dòng)MySQL服務(wù)

    net start mysql

  • 關(guān)閉MySQL服務(wù)

    net stop mysql

連接MySQL服務(wù)

mysql -u root -p 啟動(dòng)MySQL客戶端并連接MySQL服務(wù),接下來(lái)會(huì)提示輸入密碼。

基本管理

啟動(dòng)和查看服務(wù)

[root@egon ~]# systemctl start mariadb #啟動(dòng) [root@egon ~]# systemctl enable mariadb #設(shè)置開(kāi)機(jī)自啟動(dòng) Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service. [root@egon ~]# ps aux |grep mysqld |grep -v grep #查看進(jìn)程,mysqld_safe為啟動(dòng)mysql的腳本文件,內(nèi)部調(diào)用mysqld命令 mysql 3329 0.0 0.0 113252 1592 ? Ss 16:19 0:00 /bin/sh /usr/bin/mysqld_safe --basedir=/usr mysql 3488 0.0 2.3 839276 90380 ? Sl 16:19 0:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/var/lib/mysql/mysql.sock [root@egon ~]# netstat -an |grep 3306 #查看端口 tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN [root@egon ~]# ll -d /var/lib/mysql #權(quán)限不對(duì),啟動(dòng)不成功,注意user和group drwxr-xr-x 5 mysql mysql 4096 Jul 20 16:28 /var/lib/mysql

錯(cuò)誤解決

安裝完mysql 之后,登陸以后,不管運(yùn)行任何命令,總是提示這個(gè)
mac mysql error You must reset your password using ALTER USER statement before executing this statement.
解決方法:

step 1: SET PASSWORD = PASSWORD('your new password'); step 2: ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER; step 3: flush privileges;

登錄和密碼

初始狀態(tài)下,管理員root,密碼為空,默認(rèn)只允許從本機(jī)登錄localhost 設(shè)置密碼 [root@egon ~]# mysqladmin -uroot password "123" 設(shè)置初始密碼 由于原密碼為空,因此-p可以不用 [root@egon ~]# mysqladmin -uroot -p"123" password "456" 修改mysql密碼,因?yàn)橐呀?jīng)有密碼了,所以必須輸入原密碼才能設(shè)置新密碼命令格式: [root@egon ~]# mysql -h172.31.0.2 -uroot -p456 [root@egon ~]# mysql -uroot -p [root@egon ~]# mysql 以root用戶登錄本機(jī),密碼為空

windows配置文件

在mysql的解壓目錄下,新建my.ini,然后配置。注意ini文件的注釋用;或者#另起一行,如下:

[xxx] a=a ; 這里是a的注釋 # 這是a的注釋

服務(wù)端參數(shù)

在執(zhí)行mysqld命令時(shí),下列配置會(huì)生效,即mysql服務(wù)啟動(dòng)時(shí)生效

[mysqld] port=3306 ;服務(wù)端默認(rèn)監(jiān)聽(tīng)(listen on)的TCP/IP端口 character_set_server=utf8 ;數(shù)據(jù)庫(kù)默認(rèn)字符集 default-storage-engine=innodb innodb_file_per_table=1

根目錄

basedir=D:\mysql-5.7.19-winx64

data目錄

在執(zhí)行mysqld --initialize時(shí),就會(huì)將初始數(shù)據(jù)存入此處指定的目錄,在初始化之后,啟動(dòng)mysql時(shí),就會(huì)去這個(gè)目錄里找數(shù)據(jù)

datadir=D:\my_data

客戶端全局配置

[client] port=3306 default-character-set=utf8 user=root password=123

客戶端局部配置

[mysql] ;port=3306 ;default-character-set=utf8 user=egon password=4573

如果沒(méi)有配置[mysql],則用戶在執(zhí)行mysql命令時(shí)的配置以[client]為準(zhǔn)

字符編碼

[mysqld] character-set-server=utf8 collation-server=utf8_general_ci [client] default-character-set=utf8 [mysql] default-character-set=utf8

MySQL配置一覽

從網(wǎng)上摘錄的,供有興趣的查閱用。

目錄和文件

basedir = path使用給定目錄作為根目錄(安裝目錄)。
character-sets-dir = path給出存放著字符集的目錄。
datadir = path從給定目錄讀取數(shù)據(jù)庫(kù)文件。
pid-file = filename為mysqld程序指定一個(gè)存放進(jìn)程ID的文件(僅適用于UNIX/Linux系統(tǒng)); Init-V腳本需要使用這個(gè)文件里的進(jìn)程ID結(jié)束mysqld進(jìn)程。
socket = filename為MySQL客戶程序與服務(wù)器之間的本地通信指定一個(gè)套接字文件(僅適用于UNIX/Linux系統(tǒng); 默認(rèn)設(shè)置一般是/var/lib/mysql/mysql.sock文件)。在Windows環(huán)境下,如果MySQL客戶與服務(wù)器是通過(guò)命名管道進(jìn)行通信 的,–sock選項(xiàng)給出的將是該命名管道的名字(默認(rèn)設(shè)置是MySQL)。
lower_case_table_name = 1/0新目錄和數(shù)據(jù)表的名字是否只允許使用小寫(xiě)字母; 這個(gè)選項(xiàng)在Windows環(huán)境下的默認(rèn)設(shè)置是1(只允許使用小寫(xiě)字母)。

mysqld程序:語(yǔ)言設(shè)置

character-sets-server = name新數(shù)據(jù)庫(kù)或數(shù)據(jù)表的默認(rèn)字符集。為了與MySQL的早期版本保持兼容,這個(gè)字符集也可以用–default-character-set選項(xiàng)給出; 但這個(gè)選項(xiàng)已經(jīng)顯得有點(diǎn)過(guò)時(shí)了。
collation-server = name新數(shù)據(jù)庫(kù)或數(shù)據(jù)表的默認(rèn)排序方式。
lanuage = name用指定的語(yǔ)言顯示出錯(cuò)信息。

mysqld程序:通信、網(wǎng)絡(luò)、信息安全

enable-named-pipes允許Windows 2000/XP環(huán)境下的客戶和服務(wù)器使用命名管道(named pipe)進(jìn)行通信。這個(gè)命名管道的默認(rèn)名字是MySQL,但可以用–socket選項(xiàng)來(lái)改變。
local-infile [=0]允許/禁止使用LOAD DATA LOCAL語(yǔ)句來(lái)處理本地文件。
myisam-recover [=opt1, opt2, …]在啟動(dòng)時(shí)自動(dòng)修復(fù)所有受損的MyISAM數(shù)據(jù)表。這個(gè)選項(xiàng)的可取值有4種:DEFAULT、BACKUP、QUICK和FORCE; 它們與myisamchk程序的同名選項(xiàng)作用相同。
old-passwords使用MySQL 3.23和4.0版本中的老算法來(lái)加密mysql數(shù)據(jù)庫(kù)里的密碼(默認(rèn)使用MySQL 4.1版本開(kāi)始引入的新加密算法)。
port = n為MySQL程序指定一個(gè)TCP/IP通信端口(通常是3306端口)。
safe-user-create只有在mysql.user數(shù)據(jù)庫(kù)表上擁有INSERT權(quán)限的用戶才能使用GRANT命令; 這是一種雙保險(xiǎn)機(jī)制(此用戶還必須具備GRANT權(quán)限才能執(zhí)行GRANT命令)。
shared-memory允許使用內(nèi)存(shared memory)進(jìn)行通信(僅適用于Windows)。
shared-memory-base-name = name給共享內(nèi)存塊起一個(gè)名字(默認(rèn)的名字是MySQL)。
skip-grant-tables不使用mysql數(shù)據(jù)庫(kù)里的信息來(lái)進(jìn)行訪問(wèn)控制(警告:這將允許用戶任何用戶去修改任何數(shù)據(jù)庫(kù))。
skip-host-cache不使用高速緩存區(qū)來(lái)存放主機(jī)名和IP地址的對(duì)應(yīng)關(guān)系。
skip-name-resovle不把IP地址解析為主機(jī)名; 與訪問(wèn)控制(mysql.user數(shù)據(jù)表)有關(guān)的檢查全部通過(guò)IP地址行進(jìn)。
skip-networking只允許通過(guò)一個(gè)套接字文件(Unix/Linux系統(tǒng))或通過(guò)命名管道(Windows系統(tǒng))進(jìn)行本地連接,不允許ICP/IP連接; 這提高了安全性,但阻斷了來(lái)自網(wǎng)絡(luò)的外部連接和所有的Java客戶程序(Java客戶即使在本地連接里也使用TCP/IP)。
user = namemysqld程序在啟動(dòng)后將在給定UNIX/Linux賬戶下執(zhí)行; mysqld必須從root賬戶啟動(dòng)才能在啟動(dòng)后切換到另一個(gè)賬戶下執(zhí)行; mysqld_safe腳本將默認(rèn)使用–user=mysql選項(xiàng)來(lái)啟動(dòng)mysqld程序。

mysqld程序:內(nèi)存管理、優(yōu)化、查詢緩存區(qū)

bulk_insert_buffer_size = n為一次插入多條新記錄的INSERT命令分配的緩存區(qū)長(zhǎng)度(默認(rèn)設(shè)置是8M)。
key_buffer_size = n用來(lái)存放索引區(qū)塊的RMA值(默認(rèn)設(shè)置是8M)。
join_buffer_size = n在參加JOIN操作的數(shù)據(jù)列沒(méi)有索引時(shí)為JOIN操作分配的緩存區(qū)長(zhǎng)度(默認(rèn)設(shè)置是128K)。
max_heap_table_size = nHEAP數(shù)據(jù)表的最大長(zhǎng)度(默認(rèn)設(shè)置是16M); 超過(guò)這個(gè)長(zhǎng)度的HEAP數(shù)據(jù)表將被存入一個(gè)臨時(shí)文件而不是駐留在內(nèi)存里。
max_connections = nMySQL服務(wù)器同時(shí)處理的數(shù)據(jù)庫(kù)連接的最大數(shù)量(默認(rèn)設(shè)置是100)。
query_cache_limit = n允許臨時(shí)存放在查詢緩存區(qū)里的查詢結(jié)果的最大長(zhǎng)度(默認(rèn)設(shè)置是1M)。
query_cache_size = n查詢緩存區(qū)的最大長(zhǎng)度(默認(rèn)設(shè)置是0,不開(kāi)辟查詢緩存區(qū))。
query_cache_type = 0/1/2查詢緩存區(qū)的工作模式:0, 禁用查詢緩存區(qū); 1,啟用查詢緩存區(qū)(默認(rèn)設(shè)置); 2,”按需分配”模式,只響應(yīng)SELECT SQL_CACHE命令。
read_buffer_size = n為從數(shù)據(jù)表順序讀取數(shù)據(jù)的讀操作保留的緩存區(qū)的長(zhǎng)度(默認(rèn)設(shè)置是128KB); 這個(gè)選項(xiàng)的設(shè)置值在必要時(shí)可以用SQL命令SET SESSION read_buffer_size = n命令加以改變。
read_rnd_buffer_size = n類似于read_buffer_size選項(xiàng),但針對(duì)的是按某種特定順序(比如使用了ORDER BY子句的查詢)輸出的查詢結(jié)果(默認(rèn)設(shè)置是256K)。
sore_buffer = n為排序操作分配的緩存區(qū)的長(zhǎng)度(默認(rèn)設(shè)置是2M); 如果這個(gè)緩存區(qū)太小,則必須創(chuàng)建一個(gè)臨時(shí)文件來(lái)進(jìn)行排序。
table_cache = n同時(shí)打開(kāi)的數(shù)據(jù)表的數(shù)量(默認(rèn)設(shè)置是64)。
tmp_table_size = n臨時(shí)HEAP數(shù)據(jù)表的最大長(zhǎng)度(默認(rèn)設(shè)置是32M); 超過(guò)這個(gè)長(zhǎng)度的臨時(shí)數(shù)據(jù)表將被轉(zhuǎn)換為MyISAM數(shù)據(jù)表并存入一個(gè)臨時(shí)文件。

mysqld程序:日志

log [= file]把所有的連接以及所有的SQL命令記入日志(通用查詢?nèi)罩?; 如果沒(méi)有給出file參數(shù),MySQL將在數(shù)據(jù)庫(kù)目錄里創(chuàng)建一個(gè)hostname.log文件作為這種日志文件(hostname是服務(wù)器的主機(jī)名)。
log-slow-queries [= file]把執(zhí)行用時(shí)超過(guò)long_query_time變量值的查詢命令記入日志(慢查詢?nèi)罩?; 如果沒(méi)有給出file參數(shù),MySQL將在數(shù)據(jù)庫(kù)目錄里創(chuàng)建一個(gè)hostname-slow.log文件作為這種日志文件(hostname是服務(wù)器主機(jī) 名)。
long_query_time = n慢查詢的執(zhí)行用時(shí)上限(默認(rèn)設(shè)置是10s)。
long_queries_not_using_indexs把慢查詢以及執(zhí)行時(shí)沒(méi)有使用索引的查詢命令全都記入日志(其余同–log-slow-queries選項(xiàng))。
log-bin [= filename]把對(duì)數(shù)據(jù)進(jìn)行修改的所有SQL命令(也就是INSERT、UPDATE和DELETE命令)以二進(jìn)制格式記入日志(二進(jìn)制變更日志,binary update log)。這種日志的文件名是filename.n或默認(rèn)的hostname.n,其中n是一個(gè)6位數(shù)字的整數(shù)(日志文件按順序編號(hào))。
log-bin-index = filename二進(jìn)制日志功能的索引文件名。在默認(rèn)情況下,這個(gè)索引文件與二進(jìn)制日志文件的名字相同,但后綴名是.index而不是.nnnnnn。
max_binlog_size = n二進(jìn)制日志文件的最大長(zhǎng)度(默認(rèn)設(shè)置是1GB)。在前一個(gè)二進(jìn)制日志文件里的信息量超過(guò)這個(gè)最大長(zhǎng)度之前,MySQL服務(wù)器會(huì)自動(dòng)提供一個(gè)新的二進(jìn)制日志文件接續(xù)上。
binlog-do-db = dbname只把給定數(shù) 據(jù)庫(kù)里的變化情況記入二進(jìn)制日志文件,其他數(shù)據(jù)庫(kù)里的變化情況不記載。如果需要記載多個(gè)數(shù)據(jù)庫(kù)里的變化情況,就必須在配置文件使用多個(gè)本選項(xiàng)來(lái)設(shè)置,每個(gè)數(shù)據(jù)庫(kù)一行。
binlog-ignore-db = dbname不把給定數(shù)據(jù)庫(kù)里的變化情況記入二進(jìn)制日志文件。
sync_binlog = n每經(jīng)過(guò)n次日志寫(xiě)操作就把日志文件寫(xiě)入硬盤一次(對(duì)日志信息進(jìn)行一次同步)。n=1是最安全的做法,但效率最低。默認(rèn)設(shè)置是n=0,意思是由操作系統(tǒng)來(lái)負(fù)責(zé)二進(jìn)制日志文件的同步工作。
log-update [= file]記載出錯(cuò)情況的日志文件名(出錯(cuò)日志)。這種日志功能無(wú)法禁用。如果沒(méi)有給出file參數(shù),MySQL會(huì)使用hostname.err作為種日志文件的名字。

mysqld程序:鏡像(主控鏡像服務(wù)器)

server-id = n給服務(wù)器分配一個(gè)獨(dú)一無(wú)二的ID編號(hào); n的取值范圍是1~2的32次方啟用二進(jìn)制日志功能。
log-bin = name啟用二進(jìn)制日志功能。這種日志的文件名是filename.n或默認(rèn)的hostname.n,其中的n是一個(gè)6位數(shù)字的整數(shù)(日志文件順序編號(hào))。
binlog-do/ignore-db = dbname只把給定數(shù)據(jù)庫(kù)里的變化情況記入二進(jìn)制日志文件/不把給定的數(shù)據(jù)庫(kù)里的變化記入二進(jìn)制日志文件。

mysqld程序:鏡像(從屬鏡像服務(wù)器)

server-id = n給服務(wù)器分配一個(gè)唯一的ID編號(hào)
log-slave-updates啟用從屬服務(wù)器上的日志功能,使這臺(tái)計(jì)算機(jī)可以用來(lái)構(gòu)成一個(gè)鏡像鏈(A->B->C)。
master-host = hostname主控服務(wù)器的主機(jī)名或IP地址。如果從屬服務(wù)器上存在mater.info文件(鏡像關(guān)系定義文件),它將忽略此選項(xiàng)。
master-user = replicusername從屬服務(wù)器用來(lái)連接主控服務(wù)器的用戶名。如果從屬服務(wù)器上存在mater.info文件,它將忽略此選項(xiàng)。
master-password = passwd從屬服務(wù)器用來(lái)連接主控服務(wù)器的密碼。如果從屬服務(wù)器上存在mater.info文件,它將忽略此選項(xiàng)。
master-port = n從屬服務(wù)器用來(lái)連接主控服務(wù)器的TCP/IP端口(默認(rèn)設(shè)置是3306端口)。
master-connect-retry = n如果與主控服務(wù)器的連接沒(méi)有成功,則等待n秒(s)后再進(jìn)行管理方式(默認(rèn)設(shè)置是60s)。如果從屬服務(wù)器存在mater.info文件,它將忽略此選項(xiàng)。
master-ssl-xxx = xxx對(duì)主、從服務(wù)器之間的SSL通信進(jìn)行配置。
read-only = 0/10: 允許從屬服務(wù)器獨(dú)立地執(zhí)行SQL命令(默認(rèn)設(shè)置); 1: 從屬服務(wù)器只能執(zhí)行來(lái)自主控服務(wù)器的SQL命令。
read-log-purge = 0/11: 把處理完的SQL命令立刻從中繼日志文件里刪除(默認(rèn)設(shè)置); 0: 不把處理完的SQL命令立刻從中繼日志文件里刪除。
replicate-do-table = dbname.tablename與–replicate-do-table選項(xiàng)的含義和用法相同,但數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)表名字里允許出現(xiàn)通配符”%” (例如: test%.%–對(duì)名字以”test”開(kāi)頭的所有數(shù)據(jù)庫(kù)里的所以數(shù)據(jù)庫(kù)表進(jìn)行鏡像處理)。
replicate-do-db = name只對(duì)這個(gè)數(shù)據(jù)庫(kù)進(jìn)行鏡像處理。
replicate-ignore-table = dbname.tablename不對(duì)這個(gè)數(shù)據(jù)表進(jìn)行鏡像處理。
replicate-wild-ignore-table = dbn.tablen不對(duì)這些數(shù)據(jù)表進(jìn)行鏡像處理。
replicate-ignore-db = dbname不對(duì)這個(gè)數(shù)據(jù)庫(kù)進(jìn)行鏡像處理。
replicate-rewrite-db = db1name > db2name把主控?cái)?shù)據(jù)庫(kù)上的db1name數(shù)據(jù)庫(kù)鏡像處理為從屬服務(wù)器上的db2name數(shù)據(jù)庫(kù)。
report-host = hostname從屬服務(wù)器的主機(jī)名; 這項(xiàng)信息只與SHOW SLAVE HOSTS命令有關(guān)–主控服務(wù)器可以用這條命令生成一份從屬服務(wù)器的名單。
slave-compressed-protocol = 1主、從服務(wù)器使用壓縮格式進(jìn)行通信–如果它們都支持這么做的話。
slave-skip-errors = n1, n2, …或all即使發(fā)生出錯(cuò)代碼為n1、n2等的錯(cuò)誤,鏡像處理工作也繼續(xù)進(jìn)行(即不管發(fā)生什么錯(cuò)誤,鏡像處理工作也繼續(xù)進(jìn)行)。如果配置得當(dāng),從屬服務(wù)器不應(yīng) 該在執(zhí)行 SQL命令時(shí)發(fā)生錯(cuò)誤(在主控服務(wù)器上執(zhí)行出錯(cuò)的SQL命令不會(huì)被發(fā)送到從屬服務(wù)器上做鏡像處理); 如果不使用slave-skip-errors選項(xiàng),從屬服務(wù)器上的鏡像工作就可能因?yàn)榘l(fā)生錯(cuò)誤而中斷,中斷后需要有人工參與才能繼續(xù)進(jìn)行。

mysqld–InnoDB:基本設(shè)置、表空間文件

skip-innodb不加載InnoDB數(shù)據(jù)表驅(qū)動(dòng)程序–如果用不著InnoDB數(shù)據(jù)表,可以用這個(gè)選項(xiàng)節(jié)省一些內(nèi)存。
innodb-file-per-table為每一個(gè)新數(shù)據(jù)表創(chuàng)建一個(gè)表空間文件而不是把數(shù)據(jù)表都集中保存在中央表空間里(后者是默認(rèn)設(shè)置)。該選項(xiàng)始見(jiàn)于MySQL 4.1。
innodb-open-file = nInnoDB數(shù)據(jù)表驅(qū)動(dòng)程序最多可以同時(shí)打開(kāi)的文件數(shù)(默認(rèn)設(shè)置是300)。如果使用了innodb-file-per-table選項(xiàng)并且需要同時(shí)打開(kāi)很多數(shù)據(jù)表的話,這個(gè)數(shù)字很可能需要加大。
innodb_data_home_dir = pInnoDB主目錄,所有與InnoDB數(shù)據(jù)表有關(guān)的目錄或文件路徑都相對(duì)于這個(gè)路徑。在默認(rèn)的情況下,這個(gè)主目錄就是MySQL的數(shù)據(jù)目錄。
innodb_data_file_path = ts用來(lái)容納InnoDB為數(shù)據(jù)表的表空間: 可能涉及一個(gè)以上的文件; 每一個(gè)表空間文件的最大長(zhǎng)度都必須以字節(jié)(B)、兆字節(jié)(MB)或千兆字節(jié)(GB)為單位給出; 表空間文件的名字必須以分號(hào)隔開(kāi); 最后一個(gè)表空間文件還可以帶一個(gè)autoextend屬性和一個(gè)最大長(zhǎng)度(max:n)。例如,ibdata1:1G; ibdata2:1G:autoextend:max:2G的意思是: 表空間文件ibdata1的最大長(zhǎng)度是1GB,ibdata2的最大長(zhǎng)度也是1G,但允許它擴(kuò)充到2GB。除文件名外,還可以用硬盤分區(qū)的設(shè)置名來(lái)定義表 空間,此時(shí)必須給表空間的最大初始長(zhǎng)度值加上newraw關(guān)鍵字做后綴,給表空間的最大擴(kuò)充長(zhǎng)度值加上raw關(guān)鍵字做后綴(例如/dev/hdb1: 20Gnewraw或/dev/hdb1:20Graw); MySQL 4.0及更高版本的默認(rèn)設(shè)置是ibdata1:10M:autoextend。
innodb_autoextend_increment = n帶有autoextend屬性的表空間文件每次加大多少兆字節(jié)(默認(rèn)設(shè)置是8MB)。這個(gè)屬性不涉及具體的數(shù)據(jù)表文件,那些文件的增大速度相對(duì)是比較小的。
innodb_lock_wait_timeout = n如果某個(gè)事務(wù)在等待n秒(s)后還沒(méi)有獲得所需要的資源,就使用ROLLBACK命令放棄這個(gè)事務(wù)。這項(xiàng)設(shè)置對(duì)于發(fā)現(xiàn)和處理未能被InnoDB數(shù)據(jù)表驅(qū)動(dòng) 程序識(shí)別出來(lái)的死鎖條件有著重要的意義。這個(gè)選項(xiàng)的默認(rèn)設(shè)置是50s。
innodb_fast_shutdown 0/1是否以最快的速度關(guān)閉InnoDB,默認(rèn)設(shè)置是1,意思是不把緩存在INSERT緩存區(qū)的數(shù)據(jù)寫(xiě)入數(shù)據(jù)表,那些數(shù)據(jù)將在MySQL服務(wù)器下次啟動(dòng) 時(shí)再寫(xiě)入 (這么做沒(méi)有什么風(fēng)險(xiǎn),因?yàn)镮NSERT緩存區(qū)是表空間的一個(gè)組成部分,數(shù)據(jù)不會(huì)丟失)。把這個(gè)選項(xiàng)設(shè)置為0反面危險(xiǎn),因?yàn)樵谟?jì)算機(jī)關(guān)閉時(shí),InnoDB 驅(qū)動(dòng)程序很可能沒(méi)有足夠的時(shí)間完成它的數(shù)據(jù)同步工作,操作系統(tǒng)也許會(huì)在它完成數(shù)據(jù)同步工作之前強(qiáng)行結(jié)束InnoDB,而這會(huì)導(dǎo)致數(shù)據(jù)不完整。

mysqld程序:InnoDB–日志

innodb_log_group_home_dir = p用來(lái)存放InnoDB日志文件的目錄路徑(如ib_logfile0、ib_logfile1等)。在默認(rèn)的情況下,InnoDB驅(qū)動(dòng)程序?qū)⑹褂?MySQL數(shù)據(jù)目錄作為自己保存日志文件的位置。
innodb_log_files_in_group = n使用多少個(gè)日志文件(默認(rèn)設(shè)置是2)。InnoDB數(shù)據(jù)表驅(qū)動(dòng)程序?qū)⒁暂嗈D(zhuǎn)方式依次填寫(xiě)這些文件; 當(dāng)所有的日志文件都寫(xiě)滿以后,之后的日志信息將寫(xiě)入第一個(gè)日志文件的最大長(zhǎng)度(默認(rèn)設(shè)置是5MB)。這個(gè)長(zhǎng)度必須以MB(兆字節(jié))或GB(千兆字節(jié))為單 位進(jìn)行設(shè)置。
innodb_flush_log_at_trx_commit = 0/1/2這個(gè)選項(xiàng)決定著什么時(shí)候把日志信息寫(xiě)入日志文件以及什么時(shí)候把這些文件物理地寫(xiě)(術(shù)語(yǔ)稱為”同步”)到硬盤上。設(shè)置值0的意思是每隔一秒寫(xiě)一次日 志并進(jìn)行 同步,這可以減少硬盤寫(xiě)操作次數(shù),但可能造成數(shù)據(jù)丟失; 設(shè)置值1(設(shè)置設(shè)置)的意思是在每執(zhí)行完一條COMMIT命令就寫(xiě)一次日志并進(jìn)行同步,這可以防止數(shù)據(jù)丟失,但硬盤寫(xiě)操作可能會(huì)很頻繁; 設(shè)置值2是一般折衷的辦法,即每執(zhí)行完一條COMMIT命令寫(xiě)一次日志,每隔一秒進(jìn)行一次同步。
innodb_flush_method = xInnoDB日志文件的同步辦法(僅適用于UNIX/Linux系統(tǒng))。這個(gè)選項(xiàng)的可取值有兩種: fdatasync,用fsync()函數(shù)進(jìn)行同步; O_DSYNC,用O_SYNC()函數(shù)進(jìn)行同步。
innodb_log_archive = 1啟用InnoDB驅(qū)動(dòng)程序的archive(檔案)日志功能,把日志信息寫(xiě)入ib_arch_log_n文件。啟用這種日志功能在InnoDB與 MySQL一起使用時(shí)沒(méi)有多大意義(啟用MySQL服務(wù)器的二進(jìn)制日志功能就足夠用了)。

mysqld程序–InnoDB:緩存區(qū)的設(shè)置和優(yōu)化

innodb_log_buffer_pool_size = n為InnoDB數(shù)據(jù)表及其索引而保留的RAM內(nèi)存量(默認(rèn)設(shè)置是8MB)。這個(gè)參數(shù)對(duì)速度有著相當(dāng)大的影響,如果計(jì)算機(jī)上只運(yùn)行有 MySQL/InnoDB數(shù)據(jù)庫(kù)服務(wù)器,就應(yīng)該把全部?jī)?nèi)存的80%用于這個(gè)用途。
innodb_log_buffer_size = n事務(wù)日志文件寫(xiě)操作緩存區(qū)的最大長(zhǎng)度(默認(rèn)設(shè)置是1MB)。
innodb_additional_men_pool_size = n為用于內(nèi)部管理的各種數(shù)據(jù)結(jié)構(gòu)分配的緩存區(qū)最大長(zhǎng)度(默認(rèn)設(shè)置是1MB)。
innodb_file_io_threads = nI/O操作(硬盤寫(xiě)操作)的最大線程個(gè)數(shù)(默認(rèn)設(shè)置是4)。
innodb_thread_concurrency = nInnoDB驅(qū)動(dòng)程序能夠同時(shí)使用的最大線程個(gè)數(shù)(默認(rèn)設(shè)置是8)。

mysqld程序:其它選項(xiàng)

bind-address = ipaddrMySQL服務(wù)器的IP地址。如果MySQL服務(wù)器所在的計(jì)算機(jī)有多個(gè)IP地址,這個(gè)選項(xiàng)將非常重要。
default-storage-engine = type新數(shù)據(jù)表的默認(rèn)數(shù)據(jù)表類型(默認(rèn)設(shè)置是MyISAM)。這項(xiàng)設(shè)置還可以通過(guò)–default-table-type選項(xiàng)來(lái)設(shè)置。
default-timezone = name為MySQL服務(wù)器設(shè)置一個(gè)地理時(shí)區(qū)(如果它與本地計(jì)算機(jī)的地理時(shí)區(qū)不一樣)。
ft_min_word_len = n全文索引的最小單詞長(zhǎng)度工。這個(gè)選項(xiàng)的默認(rèn)設(shè)置是4,意思是在創(chuàng)建全文索引時(shí)不考慮那些由3個(gè)或更少的字符構(gòu)建單詞。
Max-allowed-packet = n客戶與服務(wù)器之間交換的數(shù)據(jù)包的最大長(zhǎng)度,這個(gè)數(shù)字至少應(yīng)該大于客戶程序?qū)⒁幚淼淖畲驜LOB塊的長(zhǎng)度。這個(gè)選項(xiàng)的默認(rèn)設(shè)置是1MB。
Sql-mode = model1, mode2, …MySQL將運(yùn)行在哪一種SQL模式下。這個(gè)選項(xiàng)的作用是讓MySQL與其他的數(shù)據(jù)庫(kù)系統(tǒng)保持最大程度的兼容。這個(gè)選項(xiàng)的可取值包括ansi、db2、 oracle、no_zero_date、pipes_as_concat。

總結(jié)

以上是生活随笔為你收集整理的MySQL基础(一)介绍和配置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: av夜色| 国产黄在线播放 | 国产乱码视频 | 欧美 国产 日本 | 国产欧美精品一区二区色综合朱莉 | 日日夜夜爱爱 | 国产成人福利 | 一级免费大片 | 男女裸体影院高潮 | 欧美日韩精品久久久免费观看 | 欧美高清性 | 亚洲精品视频免费看 | 美国黄色网址 | 天天色天天射天天操 | 天天干天天操天天 | 中文av一区 | 亚洲电影一区二区三区 | 美女网站免费观看 | 天堂在线www | 男人的天堂在线视频 | 久久男人视频 | 不卡一区在线观看 | 久久都是精品 | 人成在线视频 | 日本香蕉网 | 久久国内精品视频 | jizz在线播放| 亚洲一久久 | 一本一道精品欧美中文字幕 | 久久精品亚洲a | 九九热在线免费视频 | 精品免费久久 | www国产免费| 一区二区三区视频播放 | 中国老太婆性做爰 | 日韩美女久久 | 成人在线欧美 | 国产又粗又黄 | 在线毛片网 | 日本黄色免费在线观看 | 久久婷婷热 | 国产亚洲精品久久久久久青梅 | 搡老岳熟女国产熟妇 | 国产网红在线观看 | 香蕉久久夜色精品升级完成 | 亚洲免费久久 | 中国一极毛片 | 欧美日韩一区在线观看 | 黄色自拍视频 | 97成人在线观看 | 欧美成人综合一区 | 亚洲av成人精品一区二区三区在线播放 | 久久久极品| 91精品久久久久久久久久久 | 天天色天天色 | av成人在线看 | 久久久久人妻一道无码AV | 成年人网站黄色 | 在线视频一区二区三区四区 | 国产精品久久久久毛片大屁完整版 | 免费在线欧美 | 免费av网站观看 | 黄色网址在线免费观看 | 午夜精品一区二区在线观看 | 在线看日韩 | 五月激情开心网 | 污免费视频| 在线v| 亚洲成人av电影在线 | 男人亚洲天堂 | 18深夜在线观看免费视频 | 国产自在线拍 | 少妇无码一区二区三区 | 91精品国产日韩91久久久久久 | 爱情岛论坛亚洲品质自拍 | 国产精品h| 一区二区在线观看免费视频 | 九九热九九 | 少女国产免费观看 | 开心激情久久 | 欧美精品成人久久 | 日本黄图 | 久久亚洲视频 | www.国产欧美 | 18禁超污无遮挡无码免费游戏 | 欧美色图亚洲色 | 能在线观看的av | 可以免费观看的av | 久操福利| 在线免费播放 | 一色屋免费视频 | 亚洲一区二区三区在线看 | 贝利弗山的秘密在线观看 | 中文字幕在线有码 | 国产欧美日韩视频 | 欧美伦理在线观看 | 成人做爰黄 | 二级黄色录像 | 兄弟兄弟全集免费观看 |