文章目錄
- 基本概述
- 部署環境
- 實驗步驟
- MYSQL資料庫組態檔詳解
- MYSQL 密碼管理
- MYSQL 創建用戶授權
- MYSQL 密碼破解方法
- 總結
- MYSQL 用戶操作
- 連接資料庫
- 查看、創建、使用資料庫,表
- 用戶操作
- MYSQL 表操作
- 資料庫表內容的操作(增刪改查)
基本概述
mysql簡介
部署環境
| 系統 | 地址 |
|---|---|
| CentOS Linux release 7.4.1708 | 192.168.10.10/24 |
實驗步驟
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 ~]#
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 ~]#
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
4、使用cmake預編譯
-
Cmake 是一種跨平臺的編譯工具,比configure更高級,cmake主要撰寫cmakelists.txt,然后用cmake命令將cmakelists.txt轉化成make需要的Makefile檔案,最后用make命令編譯原始碼生成的可執行程式, -
Cmake工具和configure工具,
configure二進制程式用來生成Makefile檔案,Makefile記錄軟體需要的環境和要編譯的引數[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
5、make 編譯
-
make -j4[root@localhost mysql-5.6.20]# make -j4
6、make install
-
make install安裝[root@localhost mysql-5.6.20]# make install -j4
7、設定組態檔
-
創建組態檔
[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
8、設定服務啟動
-
測驗
[root@localhost mysql55]# chkconfig --add mysqld [root@localhost mysql55]# chkconfig --level 35 mysqld on
9、創建用戶、目錄,并修改權限
-
/data/mysql資料庫資料存放位置 -
創建
mysql用戶 -
修改權限[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 這里報錯,根據提示,安裝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下面的執行程式連接到/usr/bin
10、啟動、測驗
-
service mysqld start -
/etc/init.d/mysqld stop -
systemctl start mysqld[root@localhost ~]# service mysqld start Starting MySQL.. SUCCESS! [root@localhost ~]#
MYSQL資料庫組態檔詳解
-
常見的組態檔引數
[mysqld] 服務器端配置 datadir=/data/mysql 資料目錄 socket=/var/lib/mysql/mysql.sock socket通信設定 user=mysql 使用mysql用戶啟動 symbolic-links=0 是否支持快捷方式 log-bin=mysql-bin 開啟bin-log日志 server-id = 1 mysql服務ID auto_increment_offset=1 auto_increment_increment=2 [mysqld_safe] mysql服務安全啟動配置 log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid key_buffer_size 指定索引緩沖區的大小,它決定索引處理的速度,尤其是索引讀的速度,一般為記憶體的50% show variables like ‘key_buffer_size‘; max_connections = 3000 每個客戶端連接最大的錯誤允許數量,如果達到了此限制,這個客戶端將會被MySQL服務阻止直到執行了”FLUSH HOSTS”或者服務重啟. innodb_buffer_pool_size 對于InnoDB表來說,innodb_buffer_pool_size的作用就相當于key_buffer_size對于MyISAM表的作用一樣,InnoDB使用該引數指定大小的記憶體來緩沖資料和索引,對于單獨的MySQL資料庫服務器,最大可以把該值設定成物理記憶體的80%, 根據MySQL手冊,對于2G記憶體的機器,推薦值是1G(50%), basedir = path # 使用給定目錄作為根目錄(安裝目錄), datadir = path # 從給定目錄讀取資料庫檔案, pid-file = filename # 為mysqld程式指定一個存放行程ID的檔案(僅適用于UNIX/Linux系統); [mysqld] socket = /tmp/mysql.sock # 為MySQL客戶程式與服務器之間的本地通信指定一個套接字檔案(Linux下默認是/var/lib/mysql/mysql.sock檔案) port = 3306 # 指定MsSQL偵聽的埠 key_buffer = 384M # key_buffer是用于索引塊的緩沖區大小,增加它可得到更好處理的索引(對所有讀和多重寫),索引塊是緩沖的并且被所有的執行緒共享,key_buffer的大小視記憶體大小而定, table_cache = 512 # 為所有執行緒打開表的數量,增加該值能增加mysqld要求的檔案描述符的數量,可以避免頻繁的打開資料表產生的開銷 sort_buffer_size = 2M # 每個需要進行排序的執行緒分配該大小的一個緩沖區,增加這值加速ORDER BY或GROUP BY操作,注意:該引數對應的分配記憶體是每連接獨占!如果有100個連接,那么實際分配的總共排序緩沖區大小為100×6=600MB read_buffer_size = 2M # 讀查詢操作所能使用的緩沖區大小,和sort_buffer_size一樣,該引數對應的分配記憶體也是每連接獨享, query_cache_size = 32M # 指定MySQL查詢結果緩沖區的大小 read_rnd_buffer_size = 8M # 改引數在使用行指標排序之后,隨機讀用的, myisam_sort_buffer_size = 64M # MyISAM表發生變化時重新排序所需的緩沖 thread_concurrency = 8 # 最大并發執行緒數,取值為服務器邏輯CPU數量×2,如果CPU支持H.T超執行緒,再×2 thread_cache = 8 #快取可重用的執行緒數 skip-locking # 避免MySQL的外部鎖定,減少出錯幾率增強穩定性, [mysqldump] max_allowed_packet =16M # 服務器和客戶端之間最大能發送的可能資訊包
MYSQL 密碼管理
MYSQL資料庫在使用程序中為了加強安全防范,需要設定密碼訪問,如何設定密碼,及密碼忘記如何破解,如下設定密碼授權,密碼修改及破解的方法,
MYSQL 創建用戶授權
-
權限
資料庫名.* 資料庫中的所有 資料庫名.表 指定資料庫中的某張表 資料庫名.存盤程序 指定資料庫中的存盤程序 *.* 所有資料庫- 授權
localhost主機通過huang用戶和admin123密碼訪問本地的ISP庫的所有權限;
mysql> grant all on ISP.* to huang@localhost identified by 'admin123'; Query OK, 0 rows affected (0.21 sec)- 授權所有主機通過hun 用戶和123密碼訪問本地ISP庫的查詢、插入、更新、洗掉權限
mysql> grant select,insert,update,delete on *.* to hun@"%" identified by '123'; Query OK, 0 rows affected (0.00 sec)- 授權192.168.10.10主機通過huang用戶和admin123密碼訪問本地的ISP庫的所有權限;
mysql> grant all on ISP.* to huang@'192.168.10.10' identified by 'admin123'; Query OK, 0 rows affected (0.00 sec) - 授權
MYSQL 密碼破解方法
-
在組態檔
[mysqld]模塊中添加skip-grant-tables[root@localhost ~]# /etc/init.d/mysqld stop 1、停止mysql服務 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 服務, ERROR! MySQL server PID file could not be found! Starting MySQL.. SUCCESS! [root@localhost ~]# mysql 4、沒有密碼進入mysql mysql> use mysql; 使用mysql資料庫 Database changed mysql> mysql> update user set password = Password('hebao') where user = 'root'; 5、修改密碼 mysql> flush privileges; 6、重繪權限 mysql> quit;
總結
MYSQL 用戶操作
連接資料庫
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
查看、創建、使用資料庫,表
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)
用戶操作
- 創建用戶
創建用戶
create user '用戶名'@'IP地址' identified by '密碼';
洗掉用戶
drop user '用戶名'@'IP地址';
修改用戶
rename user '用戶名'@'IP地址' to '新用戶名'@'IP地址';
修改密碼
set password for '用戶名'@'IP地址' = Password('新密碼');
注:用戶權限相關資料保存在mysql資料庫的user表中,所以也可以直接對其進行操作(不建議)
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>
MYSQL 表操作
-
查看表
show tables; 查看資料庫全部表 select * from 表名; 查看表所有內容 -
創建表
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; 注: 默認值,創建列時可以指定默認值,當插入資料時如果未主動設定,則自動添加默認值 自增,如果為某列設定自增列,插入資料時無需設定此列,默認將自增(表中只能有一個自增列)注意:1、對于自增列,必須是索引(含主鍵)2、對于自增可以設定步長和起始值 主鍵,一種特殊的唯一索引,不允許有空值,如果主鍵使用單個列,則它的值必須唯一,如果是多列,則其組合必須唯一, -
洗掉表
drop table 表名 -
清空表內容
delete from 表名 truncate table 表名 -
修改表內容
添加列: 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 外鍵名稱 修改默認值: ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000; 洗掉默認值: ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;
資料庫表內容的操作(增刪改查)
-
增
nsert into 表 (列名,列名...) values (值,值,...) insert into 表 (列名,列名...) values (值,值,...),(值,值,值...) insert into 表 (列名,列名...) select (列名,列名...) from 表 例: insert into tab1(name,email) values('test','test8851@163.com') -
刪
delete from 表 # 洗掉表里全部資料 delete from 表 where id=1 and name='test' # 洗掉ID =1 和name='test' 那一行資料 -
改
update 表 set name = 'test' where id>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 - 根據 “列” 從小到大排列 select * from 表 order by 列 desc - 根據 “列” 從大到小排列 select * from 表 order by 列1 desc,列2 asc - 根據 “列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之前
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/274795.html
標籤:其他
下一篇:什么是Mybaits?
