MySQL安裝及基礎操作

一、mysql 5.7 安裝

--------------------------安裝mysql編譯環境--------------------------------------

yum -y install \

ncurses \

ncurses-devel \

bison \

cmake

--------------------------安裝mysql壓縮包--------------------------------------

useradd -s /sbin/nologin mysql

tar zxvf mysql-5.7.17.tar.gz -C /opt/

tar zxvf boost_1_59_0.tar.gz -C /usr/local/

cd /usr/local/

mv boost_1_59_0 boost

--------------------------mysql編譯安裝--------------------------------------

cd mysql-5.7.17/

cmake \

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \

-DSYSCONFDIR=/etc \

-DSYSTEMD_PID_DIR=/usr/local/mysql \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_ARCHIVE_STORAGE_ENGINE=1 \

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \

-DMYSQL_DATADIR=/usr/local/mysql/data \

-DWITH_BOOST=/usr/local/boost \

-DWITH_SYSTEMD=1

------注意:如果在CMAKE的過程中有報錯,當報錯解決後,需要把源碼目錄中的CMakeCache.txt文件刪除,然後再重新CMAKE,否則錯誤依舊------------

make && make install

chown -R mysql.mysql /usr/local/mysql/

---------------------------修改mysql配置文件--------------------------------

vi /etc/my.cnf

[client]

port = 3306

default-character-set=utf8

socket = /usr/local/mysql/mysql.sock

[mysql]

port = 3306

default-character-set=utf8

socket = /usr/local/mysql/mysql.sock

[mysqld]

user = mysql

basedir = /usr/local/mysql

datadir = /usr/local/mysql/data

port = 3306

character_set_server=utf8

pid-file = /usr/local/mysql/mysqld.pid

socket = /usr/local/mysql/mysql.sock

server-id = 1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES

----------------------------------------修改環境變量-----------------------

chown mysql:mysql /etc/my.cnf

echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile

echo 'export PATH' >> /etc/profile

source /etc/profile

------------------------------------數據初始化------------------------------------

cd /usr/local/mysql/

bin/mysqld \

--initialize-insecure \

--user=mysql \

--basedir=/usr/local/mysql \

--datadir=/usr/local/mysql/data

-----------------------------------------啓動服務----------------------------------

cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/

systemctl daemon-reload

systemctl start mysqld

netstat -anpt | grep 3306

systemctl enable mysqld

mysqladmin -u root -p password "abc123" //給root賬號設置密碼爲abc123提示輸入的是原始密碼。

mysql -u root -p

------------------------授權遠程登錄-------------------------------------

grant all privileges on *.* to 'root'@'%' identified by 'abc123' with grant option;


二、mysql數據庫基本操作

--------------------------庫----------------------------

//創建數據庫 create database Myschool;

//查看數據庫 show databases;

//刪除數據庫 drop database Myschool;

//進入數據庫 use Myschool;

---------------------------表---------------------------

//創建表 create table info (id int not null primary key auto_increment,name char(10) not null, score decimal(5,2),hobby int(2));

//刪除表 drop table info;

//查看錶結構 desc info;

//查看Mycshool中的表 show tables;

//修改數據表名 alter table info rename to info7;

//多表查詢 select * from info inner join hob where info.hobby=hob.id;

              select info.name,ifo.score.hob.hobname from info inner join hob where info.hobby=hob.id;

//別名查詢 select i.name,i.score.h.hobname from info i inner join hob h where i.hobby=h.id;

//查詢生成新表 create table info2 select i.name,i.score.h.hobname from info i inner join hob h where i.hobby=h.id;

----------------------數據---------------------------

//查看info表中的數據 select * from info;

//插入數據 insert into info (id,name,score) values (5,'tianqi',80);

//篩選 條件 select * from info where id=6;

//修改更新信息 update info set score=75 where id=6;

//刪除信息 delete from info where name='test';

//添加字段 alter table info add hobby int(2);

//修改列名 alter table info rename column score to score2;

//修改字段的數據類型 alter table info modify score decimal(4,1);

//排序(升序/降序)select * from info where 1=1 order by score; 默認升序

            select * from info where 1=1 order by score asc; 升序

            select * from info where 1=1 order by score desc; 降序

//分組  select * from info group by hobby

//聚合函數

           統計 count() 例:select count(*) from info2;

           平均值 avg() 例:select avg(score)from info2;


三、mysql索引與事務

索引創建方法:create index 索引名字 on 列的列表

例:create index id_index on info(id);

查詢索引:show index from info; show index from info \G;

刪除索引:drop index id_index on info;

創建唯一索引:create unique index id_index on info(id);

創建主鍵索引:alter table info add primary key(id);

添加字段: alter table info add column age int;

刪除字段:alter table info drop column age;

創建全文索引:create table info(descript TEXT,FULLTEXT(descript)); engine=MyISAM

多列索引:create index multi_index on info(name,adress);


事務:一組操作共同執行或者都不執行,結果保持一致;

begin 開始 set autocommit=0 :禁止自動提交

commit 提交

rollback 回滾

savepoint s1; 定義回滾點

rollback to savepoint s1; 回滾到定義的回滾點

事務四個特性:

原子性,一致性,隔離性,持久性


視圖 數據庫中的虛擬表

作用: 一張表或者多表中的數據給不同的權限用戶提供訪問

create view score_view as select * from info where score > 80;


四、用戶管理

創建

create user ‘username’@‘host’ identified by 'passwd'

grant 權限 on 數據庫.表 to 用戶@主機 identified by 密碼

查看

select user,authentication_string,host from user;

刪除

drop user 'lisi'@'localhost';

重命名

rename user 'zhangsan'@'localhost' to 'test'@'192.168.218.130';

密碼明文轉化成密文

select password('abc123');

create user ‘username’@‘host’ identified by password '*6691484EA6B50DDDE1926A220DA01FA9E575C18A';

更改用戶密碼

set password for 'test'@'192.168.218.130' = password('abc123');

忘記密碼(5.7)

systemctl stop mysqld

vim /etc/my.cnf

[mysqld]

skip-grant-tables

systemctl start mysqld

mysql

update mysql.user set authentication_string = password('abc123') where user = 'root';

賦權

grant 權限 on 數據庫.表 to 用戶@主機 identified by 密碼;

撤銷權限

revoke 權限 on 數據庫.表 from 用戶@主機;

查看權限

show grants for 用戶@主機;

日誌管理

vim /etc/my.cnf

[mysqld]

log-error=/usr/local/mysql/data/mysql_error.log #錯誤日誌

general_log=ON #通用日誌

general_log_file=/usr/local/mysql/data/mysql_general.log

log_bin=mysql-bin #二進制日誌(記錄所有操作)

查看二進制文件

mysqlbinlog --no-defaults mysql-bin.00001

慢日誌

slow_query_log=ON

slow_query_log_file=mysql-slow_query.log

long_query_time=1 #參照時間

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章