Centos7.4 如何使用cmake編譯安裝mysql(centos7.4安裝教程詳解)
文章目錄
基本概述
部署環(huán)境
實驗步驟
MYSQL數(shù)據(jù)庫配置文件詳解
MYSQL 密碼管理
MYSQL 創(chuàng)建用戶授權(quán)
MYSQL 密碼破解方法
總結(jié)
MYSQL 用戶操作
連接數(shù)據(jù)庫
查看、創(chuàng)建、使用數(shù)據(jù)庫,表
用戶操作
MYSQL 表操作
數(shù)據(jù)庫表內(nèi)容的操作(增刪改查)
基本概述
mysql簡介
部署環(huán)境
實驗步驟
1、Mysql -:https://downloads.mysql.com/archives/community/
下載安裝包:https://downloads.mysql.com/archives/get/p/23/file/mysql-5.6.20.tar.gz
[root@localhost ~]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.6.20.tar.gz --2021-04-07 09:48:21-- https://downloads.mysql.com/archives/get/p/23/file/mysql-5.6.20.tar.gz Resolving downloads.mysql.com (downloads.mysql.com)... 137.254.60.14 Connecting to downloads.mysql.com (downloads.mysql.com)|137.254.60.14|:443... connected. HTTP request sent, awaiting response... 302 Found Location: https://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.20.tar.gz [following] --2021-04-07 09:48:23-- https://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.20.tar.gz Resolving cdn.mysql.com (cdn.mysql.com)... 184.31.28.242 Connecting to cdn.mysql.com (cdn.mysql.com)|184.31.28.242|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 32979820 (31M) [application/x-tar-gz] Saving to: ‘mysql-5.6.20.tar.gz’ 100%[=========================================>] 32,979,820 9.70MB/s in 3.2s 2021-04-07 09:48:26 (9.70 MB/s) - ‘mysql-5.6.20.tar.gz’ saved [32979820/32979820] [root@localhost ~]#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2、解壓安裝包
tar xf mysql-5.6.20.tar.gz
[root@localhost ~]# tar xf mysql-5.6.20.tar.gz [root@localhost ~]# ls anaconda-ks.cfg mysql-5.6.20 mysql-5.6.20.tar.gz perl5 yum_back [root@localhost ~]#
1
2
3
4
5
3、安裝依賴工具(gcc c ncurses ncurses-devel cmake libaio bison gcc-c++ git)
yum 安裝
[root@localhost ~]# yum -y install gcc c ncurses ncurses-devel cmake libaio bison gcc-c++ git
1
4、使用cmake預(yù)編譯
Cmake 是一種跨平臺的編譯工具,比configure更高級,cmake主要編寫cmakelists.txt,然后用cmake命令將cmakelists.txt轉(zhuǎn)化成make需要的Makefile文件,最后用make命令編譯源碼生成的可執(zhí)行程序。
Cmake工具和configure工具,configure二進(jìn)制程序用來生成Makefile文件,Makefile記錄軟件需要的環(huán)境和要編譯的參數(shù)
[root@localhost ~]# cd mysql-5.6.20 [root@localhost mysql-5.6.20]# ls BUILD dbug libmysqld regex unittest BUILD-CMAKE Docs libservices scripts VERSION client Doxyfile-perfschema man sql vio cmake extra mysql-test sql-bench win CMakeLists.txt include mysys sql-common zlib cmd-line-utils INSTALL-SOURCE mysys_ssl storage config.h.cmake INSTALL-WIN-SOURCE packaging strings configure.cmake libevent plugin support-files COPYING libmysql README tests [root@localhost mysql-5.6.20]# cd [root@localhost ~]# [root@localhost ~]# cd mysql-5.6.20 [root@localhost mysql-5.6.20]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql55/ \ > -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \ > -DMYSQL_DATADIR=/data/mysql \ > -DSYSCONFDIR=/etc \ > -DMYSQL_USER=mysql \ > -DMYSQL_TCP_PORT=3306 \ > -DWITH_XTRADB_STORAGE_ENGINE=1 \ > -DWITH_INNOBASE_STORAGE_ENGINE=1 \ > -DWITH_PARTITION_STORAGE_ENGINE=1 \ all \ -DWITH_BIG_TABLES=1 \ -DWITH_DEBUG=0> -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ > -DWITH_MYISAM_STORAGE_ENGINE=1 \ > -DWITH_READLINE=1 \ > -DENABLED_LOCAL_INFILE=1 \ > -DWITH_EXTRA_CHARSETS=1 \ > -DDEFAULT_CHARSET=utf8 \ > -DDEFAULT_COLLATION=utf8_general_ci \ > -DEXTRA_CHARSETS=all \ > -DWITH_BIG_TABLES=1 \ > -DWITH_DEBUG=0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
5、make 編譯
make -j4
[root@localhost mysql-5.6.20]# make -j4
1
6、make install
make install安裝
[root@localhost mysql-5.6.20]# make install -j4
1
7、設(shè)置配置文件
創(chuàng)建配置文件
[root@localhost mysql-5.6.20]# cd /usr/local/mysql55/ [root@localhost mysql55]# ll support-files/ total 32 -rwxr-xr-x 1 root root 1153 Apr 7 20:08 binary-configure -rw-r--r-- 1 root root 773 Jul 18 2014 magic -rw-r--r-- 1 root root 1126 Apr 7 20:08 my-default.cnf -rwxr-xr-x 1 root root 1061 Apr 7 20:08 mysqld_multi.server -rwxr-xr-x 1 root root 880 Apr 7 20:08 mysql-log-rotate -rwxr-xr-x 1 root root 10880 Apr 7 20:08 mysql.server [root@localhost mysql55]# \cp -f support-files/my-default.cnf /etc/my.cnf [root@localhost mysql55]# \cp -f support-files/mysql.server /etc/init.d/mysqld
1
2
3
4
5
6
7
8
9
10
11
12
13
8、設(shè)置服務(wù)啟動
測試
[root@localhost mysql55]# chkconfig --add mysqld [root@localhost mysql55]# chkconfig --level 35 mysqld on
1
2
9、創(chuàng)建用戶、目錄,并修改權(quán)限
/data/mysql數(shù)據(jù)庫數(shù)據(jù)存放位置
創(chuàng)建mysql用戶
修改權(quán)限
[root@localhost mysql55]# mkdir -p /data/mysql [root@localhost mysql55]# useradd -M -s /sbin/nologin mysql [root@localhost mysql55]# chown -R mysql.mysql /data/mysql/ [root@localhost mysql55]# /usr/local/mysql55/scripts/mysql_install_db --user=mysql --datadir=/data/mysql/ --basedir=/usr/local/mysql55/ FATAL ERROR: please install the following Perl modules before executing /usr/local/mysql55/scripts/mysql_install_db: Data::Dumper 這里報錯,根據(jù)提示,安裝perl*,然后再次初始化 [root@localhost ~]# yum -y install perl* [root@localhost mysql55]# /usr/local/mysql55/scripts/mysql_install_db --user=mysql --datadir=/data/mysql/ --basedir=/usr/local/mysql55/ ...... [root@localhost mysql55]# ln -s /usr/local/mysql55/bin/* /usr/bin/ 將mysql bin下面的執(zhí)行程序連接到/usr/bin
1
2
3
4
5
6
7
8
9
10
11
12
13
14
10、啟動、測試
service mysqld start
/etc/init.d/mysqld stop
systemctl start mysqld
[root@localhost ~]# service mysqld start Starting MySQL.. SUCCESS! [root@localhost ~]#
1
2
3
MYSQL數(shù)據(jù)庫配置文件詳解
常見的配置文件參數(shù)
[mysqld] 服務(wù)器端配置 datadir=/data/mysql 數(shù)據(jù)目錄 socket=/var/lib/mysql/mysql.sock socket通信設(shè)置 user=mysql 使用mysql用戶啟動 symbolic-links=0 是否支持快捷方式 log-bin=mysql-bin 開啟bin-log日志 server-id = 1 mysql服務(wù)ID auto_increment_offset=1 auto_increment_increment=2 [mysqld_safe] mysql服務(wù)安全啟動配置 log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid key_buffer_size 指定索引緩沖區(qū)的大小,它決定索引處理的速度,尤其是索引讀的速度。一般為內(nèi)存的50% show variables like ‘key_buffer_size‘; max_connections = 3000 每個客戶端連接最大的錯誤允許數(shù)量,如果達(dá)到了此限制,這個客戶端將會被MySQL服務(wù)阻止直到執(zhí)行了”FLUSH HOSTS”或者服務(wù)重啟. innodb_buffer_pool_size 對于InnoDB表來說,innodb_buffer_pool_size的作用就相當(dāng)于key_buffer_size對于MyISAM表的作用一樣。InnoDB使用該參數(shù)指定大小的內(nèi)存來緩沖數(shù)據(jù)和索引。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
對于單獨的MySQL數(shù)據(jù)庫服務(wù)器,最大可以把該值設(shè)置成物理內(nèi)存的80%。 根據(jù)MySQL手冊,對于2G內(nèi)存的機(jī)器,推薦值是1G(50%)。 basedir = path # 使用給定目錄作為根目錄(安裝目錄)。 datadir = path # 從給定目錄讀取數(shù)據(jù)庫文件。 pid-file = filename # 為mysqld程序指定一個存放進(jìn)程ID的文件(僅適用于UNIX/Linux系統(tǒng)); [mysqld] socket = /tmp/mysql.sock # 為MySQL客戶程序與服務(wù)器之間的本地通信指定一個套接字文件(Linux下默認(rèn)是/var/lib/mysql/mysql.sock文件) port = 3306 # 指定MsSQL偵聽的端口 key_buffer = 384M # key_buffer是用于索引塊的緩沖區(qū)大小,增加它可得到更好處理的索引(對所有讀和多重寫)。索引塊是緩沖的并且被所有的線程共享,key_buffer的大小視內(nèi)存大小而定。 table_cache = 512 # 為所有線程打開表的數(shù)量。增加該值能增加mysqld要求的文件描述符的數(shù)量。可以避免頻繁的打開數(shù)據(jù)表產(chǎn)生的開銷 sort_buffer_size = 2M # 每個需要進(jìn)行排序的線程分配該大小的一個緩沖區(qū)。增加這值加速ORDER BY或GROUP BY操作。注意:該參數(shù)對應(yīng)的分配內(nèi)存是每連接獨占!如果有100個連接,那么實際分配的總共排序緩沖區(qū)大小為100×6=600MB read_buffer_size = 2M # 讀查詢操作所能使用的緩沖區(qū)大小。和sort_buffer_size一樣,該參數(shù)對應(yīng)的分配內(nèi)存也是每連接獨享。 query_cache_size = 32M # 指定MySQL查詢結(jié)果緩沖區(qū)的大小 read_rnd_buffer_size = 8M # 改參數(shù)在使用行指針排序之后,隨機(jī)讀用的。 myisam_sort_buffer_size = 64M # MyISAM表發(fā)生變化時重新排序所需的緩沖 thread_concurrency = 8 # 最大并發(fā)線程數(shù),取值為服務(wù)器邏輯CPU數(shù)量×2,如果CPU支持H.T超線程,再×2 thread_cache = 8 #緩存可重用的線程數(shù) skip-locking # 避免MySQL的外部鎖定,減少出錯幾率增強穩(wěn)定性。 [mysqldump] max_allowed_packet =16M # 服務(wù)器和客戶端之間最大能發(fā)送的可能信息包
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
MYSQL 密碼管理
MYSQL數(shù)據(jù)庫在使用過程中為了加強安全防范,需要設(shè)置密碼訪問,如何設(shè)置密碼,及密碼忘記如何破解,如下設(shè)置密碼授權(quán),密碼修改及破解的方法。
MYSQL 創(chuàng)建用戶授權(quán)
權(quán)限
數(shù)據(jù)庫名.* 數(shù)據(jù)庫中的所有 數(shù)據(jù)庫名.表 指定數(shù)據(jù)庫中的某張表 數(shù)據(jù)庫名.存儲過程 指定數(shù)據(jù)庫中的存儲過程 *.* 所有數(shù)據(jù)庫
1
2
3
4
授權(quán)l(xiāng)ocalhost主機(jī)通過huang用戶和admin123密碼訪問本地的ISP庫的所有權(quán)限;
mysql> grant all on ISP.* to huang@localhost identified by 'admin123'; Query OK, 0 rows affected (0.21 sec)
1
2
授權(quán)所有主機(jī)通過hun 用戶和123密碼訪問本地ISP庫的查詢、插入、更新、刪除權(quán)限
mysql> grant select,insert,update,delete on *.* to hun@"%" identified by '123'; Query OK, 0 rows affected (0.00 sec)
1
2
授權(quán)192.168.10.10主機(jī)通過huang用戶和admin123密碼訪問本地的ISP庫的所有權(quán)限;
mysql> grant all on ISP.* to huang@'192.168.10.10' identified by 'admin123'; Query OK, 0 rows affected (0.00 sec)
1
2
MYSQL 密碼破解方法
在配置文件[mysqld]模塊中添加skip-grant-tables
[root@localhost ~]# /etc/init.d/mysqld stop 1、停止mysql服務(wù) Shutting down MySQL. SUCCESS! [root@localhost ~]# [root@localhost ~]# vim /etc/my.cnf 2、修改配置文件 [root@localhost ~]# cat /etc/my.cnf|grep skip-grant* skip-grant-tables [root@localhost ~]# /etc/init.d/mysqld restart 3、重啟mysql 服務(wù), ERROR! MySQL server PID file could not be found! Starting MySQL.. SUCCESS! [root@localhost ~]# mysql 4、沒有密碼進(jìn)入mysql mysql> use mysql; 使用mysql數(shù)據(jù)庫 Database changed mysql> mysql> update user set password = Password('hebao') where user = 'root'; 5、修改密碼 mysql> flush privileges; 6、刷新權(quán)限 mysql> quit;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
總結(jié)
MYSQL 用戶操作
連接數(shù)據(jù)庫
mysql -u user -p 例:mysql -u root -p 常見錯誤如下: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2), it means that the MySQL server daemon (Unix) or service (Windows) is not running. 退出連接: QUIT 或者 Ctrl+D
1
2
3
4
5
6
7
查看、創(chuàng)建、使用數(shù)據(jù)庫,表
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ 4 rows in set (0.00 sec) mysql> create database S default charset utf8 collate utf8_general_ci; mysql> use S; Database changed mysql> show tables; Empty set (0.00 sec)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
用戶操作
創(chuàng)建用戶
創(chuàng)建用戶 create user '用戶名'@'IP地址' identified by '密碼'; 刪除用戶 drop user '用戶名'@'IP地址'; 修改用戶 rename user '用戶名'@'IP地址' to '新用戶名'@'IP地址'; 修改密碼 set password for '用戶名'@'IP地址' = Password('新密碼'); 注:用戶權(quán)限相關(guān)數(shù)據(jù)保存在mysql數(shù)據(jù)庫的user表中,所以也可以直接對其進(jìn)行操作(不建議) mysql> create user 'hbs'@'192.168.10.10' identified by '123'; Query OK, 0 rows affected (0.00 sec) mysql> drop user 'hbs'@'192.168.10.10'; Query OK, 0 rows affected (0.00 sec) mysql> rename user 'hbs'@'192.168.10.10' to 'liuaoni'@'192.168.10.13'; Query OK, 0 rows affected (0.00 sec) mysql> mysql> set password for 'liuaoni'@'192.168.10.13'=Password('!23'); Query OK, 0 rows affected (0.00 sec) mysql>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
MYSQL 表操作
查看表
show tables; 查看數(shù)據(jù)庫全部表 select * from 表名; 查看表所有內(nèi)容
1
2
創(chuàng)建表
create table 表名( 列名 類型 是否可以為空, 列名 類型 是否可以為空 )ENGINE=InnoDB DEFAULT CHARSET=utf8 來一個實例好詳解 CREATE TABLE `tab1` ( `nid` int(11) NOT NULL auto_increment, `name` varchar(255) DEFAULT test, `email` varchar(255), PRIMARY KEY (`nid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 注: 默認(rèn)值,創(chuàng)建列時可以指定默認(rèn)值,當(dāng)插入數(shù)據(jù)時如果未主動設(shè)置,則自動添加默認(rèn)值 自增,如果為某列設(shè)置自增列,插入數(shù)據(jù)時無需設(shè)置此列,默認(rèn)將自增(表中只能有一個自增列)注意:1、對于自增列,必須是索引(含主鍵)2、對于自增可以設(shè)置步長和起始值 主鍵,一種特殊的唯一索引,不允許有空值,如果主鍵使用單個列,則它的值必須唯一,如果是多列,則其組合必須唯一。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
刪除表
drop table 表名
1
清空表內(nèi)容
delete from 表名 truncate table 表名
1
2
修改表內(nèi)容
添加列: alter table 表名 add 列名 類型 刪除列: alter table 表名 drop column 列名 修改列: alter table 表名 modify column 列名 類型; -- 類型 alter table 表名 change 原列名 新列名 類型; -- 列名,類型 添加主鍵: alter table 表名 add primary key(列名); 刪除主鍵: alter table 表名 drop primary key; alter table 表名 modify 列名 int, drop primary key; 添加外鍵: alter table 從表 add constraint 外鍵名稱(形如:FK_從表_主表) foreign key 從表(外鍵字段) references 主表(主鍵字段); 刪除外鍵: alter table 表名 drop foreign key 外鍵名稱 修改默認(rèn)值: ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000; 刪除默認(rèn)值: ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
數(shù)據(jù)庫表內(nèi)容的操作(增刪改查)
增
nsert into 表 (列名,列名...) values (值,值,...) insert into 表 (列名,列名...) values (值,值,...),(值,值,值...) insert into 表 (列名,列名...) select (列名,列名...) from 表 例: insert into tab1(name,email) values('test','test8851@163.com')
1
2
3
4
5
刪
delete from 表 # 刪除表里全部數(shù)據(jù) delete from 表 where id=1 and name='test' # 刪除ID =1 和name='test' 那一行數(shù)據(jù)
1
2
改
update 表 set name = 'test' where id>1
1
查
select * from 表 select * from 表 where id > 1 select nid,name,gender as gg from 表 where id > 1 查這塊的條件太多太多我給列舉出來至于組合還得看大家的理解程度哈 a、條件判斷where select * from 表 where id > 1 and name != 'aylin' and num = 12; select * from 表 where id between 5 and 16; select * from 表 where id in (11,22,33) select * from 表 where id not in (11,22,33) select * from 表 where id in (select nid from 表) b、通配符like select * from 表 where name like 'zhang%' # zhang開頭的所有(多個字符串) select * from 表 where name like 'zhang_' # zhang開頭的所有(一個字符) c、限制limit select * from 表 limit 5; - 前5行 select * from 表 limit 4,5; - 從第4行開始的5行 select * from 表 limit 5 offset 4 - 從第4行開始的5行 d、排序asc,desc select * from 表 order by 列 asc - 根據(jù) “列” 從小到大排列 select * from 表 order by 列 desc - 根據(jù) “列” 從大到小排列 select * from 表 order by 列1 desc,列2 asc - 根據(jù) “列1” 從大到小排列,如果相同則按列2從小到大排序 e、分組group by select num from 表 group by num select num,nid from 表 group by num,nid select num,nid from 表 where nid > 10 group by num,nid order nid desc select num,nid,count(*),sum(score),max(score),min(score) from 表 group by num,nid select num from 表 group by num having max(id) > 10 特別的:group by 必須在where之后,order by之前
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
CentOS MySQL
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。