mysql數據庫的安裝

實戰:rpm包安裝

1、yum安裝

centos6上yum install mysql-server

rpm -ql mysql-server

/etc/rc.d/init.d/mysqld? 服務名(服務腳本的名稱)

/usr/libexec/mysqld? 數據庫的主程序(二進制的程序路徑與平時看到的二進制程序路徑不一樣)

/var/lib/mysql? 存放用戶數據的數據庫所在的目錄,將來存放大量的用戶數據

/var/log/mysqld.log???? mysql日志

chkconfig mysqld on? 設為開機啟動

service mysqld start? 啟動mysqld服務

ss -ntul 查看3306端口是否打開

ls /var/lib/mysql/? 第一次啟動的時候會自動生成數據庫文件,如圖

mysql有一個專門的客戶端工具,就是mysql

which mysql? 顯示/usr/bin/mysql

rpm -qf /usr/bin/mysql? 查看mysql命令來自于哪個包,顯示:

mysql-5.1.73-8.el6_8.x86_64? 這是客戶端工具包

在centos6命令行輸入mysql

下列這些都是客戶端命令,不需要加分號!

????????? (\?) Synonym for `help’.

clear???? (\c) Clear the current input statement.

connect?? (\r) Reconnect to the server. Optional arguments are db and host.

delimiter (\d) Set statement delimiter.

edit????? (\e) Edit command with $EDITOR.

ego?????? (\G) Send command to mysql server, display result vertically.

exit????? (\q) 退出mysql數據庫.

go??????? (\g) Send command to mysql server.

help????? (\h) Display this help.

nopager?? (\n) Disable pager, print to stdout.

notee???? (\t) Don’t write into outfile.

pager???? (\P) Set PAGER [to_pager]. Print the query results via PAGER.

print???? (\p) Print current command.

prompt??? (\R) 更改mysql提示信息,即更改提示符!prompt \u@[\D] \r:\m:\s ->

man mysql

vim /etc/my.cnf.d/mysql-clients.cnf

或者vim /etc/profile.d/mysql.sh

export MYSQL_PS1=”(\u@\h) [\d]> “定義為全局變量也可以!source或者.下生效

quit????? (\q) 退出mysql數據庫

rehash??? (\#) Rebuild completion hash.

source??? (\.) 執行SQL腳本,后面跟文件作為參數

status ???(\s) ?得到系統的狀態信息

system??? (\!)? 在mysql里能執行shell命令

tee ??????(\T) Set outfile [to_outfile]. Append everything into given outfile.

use?????? (\u) ?切換數據庫,use后面跟數據庫的名字

charset?? (\C) Switch to another charset. Might be needed for processing binlog

mysql> show databases;查看當前系統中所有的數據庫列表,顯示

有三個數據庫,每個數據庫里又可以存放若干張表。

數據庫連接時用的用戶名,這個名字千萬別和linux的用戶名混淆,root@localhost可不是linux用戶,是mysql數據庫用戶的自身賬號,在mysql數據庫中也有一個賬號默認也叫root,這個root就是mysql數據庫的管理員。@后面的代表主機名,指的是在mysql數據庫中,root用戶在localhost主機上登陸

mysql> status

在centos7上yum install mariadb-server -y

mariadb-server 服務器端包 ??mariadb? 客戶端包

rpm -ql mariadb-server

/usr/lib/systemd/system/mariadb.service 服務名

/usr/libexec/mysqld? 二進制主程序路徑

systemctl start mariadb? 啟動服務

ss -ntul 查看端口是否打開

在命令行輸入mysql

su – liu 切換到普通用戶

在命令行輸入mysql

drop database test; 刪除test庫

drop tables? 刪除表

create database testdb;? 創建testdb數據庫

為什么liu用戶能對mysql數據庫進行刪減,這也太不安全了,實際上,登陸mysql數據庫時如果不輸入用戶密碼時,默認是用mysql的root用戶進行登陸。

為了加強安全,通常將root@localhost加口令!

而且如果

user表中存放的是當前在mysql數據庫中的用戶信息,顯示內容太多

顯示如下

所以mysql數據庫剛剛裝好的時候默認是不安全的,因此要做一些方法增強安全性!

要實現這個功能,目前不需要掌握太復雜的語法,只需要跑一個腳本即可!即

mysql_secure_installation,這個腳本是系統自帶的腳本

which mysql_secure_installation 顯示/usr/bin/mysql_secure_installation

rpm -qf /usr/bin/mysql_secure_installation顯示

mariadb-server-5.5.56-2.el7.x86_64

在命令行輸入mysql_secure_installation

 

設置完以后,再在命令行直接輸入mysql就不能直接登陸了,如圖

注意:mysql用戶賬號由兩部分組成:’USERNAME’@’HOST’,上圖中是四個賬號!host代表你從哪臺電腦上登陸。如果host寫成192.168.30.6,意味著我可以坐在192.168.30.6主機上遠程的用mysql數據庫以root賬號的身份來登陸!默認是不允許遠程登陸的!

在centos6上通過遠程連接centos7上的mysql數據庫,可以聯嗎?

說明不可以連,原因是在centos7上mysql數據庫根本沒有授權centos6可以連!

 

實戰:以mariadb為例,在官網(www.mariadb.org)上下載較新的rpm包進行安裝!

登陸www.mariadb.org網站—Download—Download—

vim /etc/yum.repos.d/base.repo 修改yum倉庫

光盤里帶的是mariadb5.5,而自己配的yum倉庫里面是mariadb10.2,如果這兩個倉庫同時都是開啟狀態,默認會下載哪一個版本?答:最新版本!

yum install mariadb-server

 

實戰:在centos7.4上二進制安裝mariadb-10.2.15-linux-x86_64.tar.gz過程

二進制安裝指的是人家都給你編譯好了,打包到一個tar文件里面,你把它下載下來解包,解包解到哪去要看人家編譯的時候指定在哪,你就往哪解壓縮,解完以后還要相應的配些東西。

第0步:下載二進制源碼

www.mariadb.org—Download— Download—

下載后

rz 將二進制包傳到centos7.4上

第一步:檢查環境,iptables、selinux、mariadb-server、mysql-server,如果有老版本卸載!

第二步:下載包

第三步:

useradd -r -d /app/mysqldb -s /sbin/nologin mysql 創建mysql用戶,并指定家目錄是/data/mysqldb,用來存放用戶數據的。

 

由于二進制文件是已經被別人編譯過的,那么解包的時候就要將文件解到編譯時指定的目錄下,所以要搞清楚人家編譯的時候它的路徑在哪,怎么查?

tar -xvf mariadb-10.2.15-linux-x86_64.tar.gz -C /usr/local/? 解包

cd /usr/local/

ln -s mariadb-10.2.15-linux-x86_64 mysql 創建軟鏈接

chown -R root:root mysql? 將mysql目錄及目錄下的所有文件的所有者、所屬組改為root

echo PATH=/usr/local/mysql/bin:$PATH>/etc/profile.d/mysql.sh修改環境變量

. /etc/profile.d/mysql.sh? 立即生效

第四步:創建邏輯卷,作為存放用戶數據

在虛擬機上加一塊200G硬盤,將整塊硬盤作為邏輯卷

echo “- – -” > /sys/class/scsi_host/host0/scan

pvcreate /dev/sdb? 創建物理卷

vgcreate vg0 /dev/sdb 創建卷組

lvcreate -n lv_mysql -l 100%FREE vg0 創建邏輯卷,名字是lv_mysql

mkfs.xfs /dev/vg0/lv_mysql? 創建文件系統

vim /etc/fstab?? 將邏輯卷掛載到/app下

mount -a? 掛載

mkdir /app/mysqldb

chown mysql:mysql /app/mysqldb? 將mysqldb目錄的所有者和所屬組改成mysql

chmod 770 /app/mysqldb/? 修改mysqldb目錄的權限

需要注意的是:現在有兩個文件夾,/usr/local/mysql這個文件夾是數據庫的二進制程序放的位置,而/app/mysqldb放的是用戶的數據的目錄。

第五步:生成默認數據庫,否則無法啟動服務,生成的方法就是調用一個腳本

調用腳本的時候一定要進入到/usr/local/mysql目錄下 ?cd /usr/local/mysql

切記:調用該腳本的時候必須只能在/usr/local/mysql目錄下,不能進入到scripts目錄下使用該腳本,因為該腳本還調用了/usr/local/mysql目錄下的其他文件!

第五步:修改配置文件,告訴二進制程序數據庫文件是放在/app/mysqldb下

配置文件就在解包的目錄下,即/usr/local/mysql/support-files目錄下,有好幾個模板,按需求進行選擇

cp /etc/my.cnf{,.bak}? 將原/etc/my.cnf文件備份

cp /usr/local/mysql/support-files/my-huge.cnf? /etc/my.cnf覆蓋原配置文件

注:

vim /etc/my.cnf

第六步:

復制解包中自帶的服務腳本

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld -a

chkconfig –add mysqld 將mysqld服務加入到服務列表中

chkconfig –list

systemctl start mysqld 啟動mysqld服務

ss -ntul

說明服務正常啟動!

mysql_secure_installation? 設置安全策略

/usr/local/mysql/bin/mysqld –print-defaults 查看mysqld主程序的默認設置

 

老師總結:

 

源碼編譯安裝mariadb

? 安裝包

yum install bison bison-devel zlib-devel libcurl-devel libarchive-devel boost-devel gcc gcc-c++ cmake libevent-devel gnutls-devel libaio-devel openssl-devel ncurses-devel libxml2-devel

? 做準備用戶和數據目錄

mkdir /data

useradd –r –s /bin/false –m –d /data/mysqldb/ mysql

tar xvf mariadb-10.2.12.tar.gz

? cmake 編譯安裝

cd mariadb-10.2.12/

編譯選項:

https://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html

 

源碼編譯安裝mariadb

cmake . \

-DCMAKE_INSTALL_PREFIX=/app/mysql \?? 指定應用程序路徑

-DMYSQL_DATADIR=/data/mysqldb/ \????? 指定數據庫路徑

-DSYSCONFDIR=/etc \?????????????????? 配置文件

-DMYSQL_USER=mysql \????????????????? 用戶名

-DWITH_INNOBASE_STORAGE_ENGINE=1 \? 存儲引擎

-DWITH_ARCHIVE_STORAGE_ENGINE=1 \

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

-DWITH_PARTITION_STORAGE_ENGINE=1 \

-DWITHOUT_MROONGA_STORAGE_ENGINE=1 \

-DWITH_DEBUG=0 \

-DWITH_READLINE=1 \

-DWITH_SSL=system \

-DWITH_ZLIB=system \

-DWITH_LIBWRAP=0 \

-DENABLED_LOCAL_INFILE=1 \

-DMYSQL_UNIX_ADDR=/app/mysql/mysql.sock \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci

make && make install

 

源碼編譯安裝mariadb

? 準備環境變量

echo ‘PATH=/app/mysql/bin:$PATH’ >? /etc/profile.d/mysql.sh

. /etc/profile.d/mysql.sh

? 生成數據庫文件

cd /app/mysql/

scripts/mysql_install_db –datadir=/data/mysqldb/ –user=mysql

? 準備配置文件

cp /app/mysql/support-files/my-huge.cnf /etc/my.cnf

? 準備啟動腳本

cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld

? 啟動服務

chkconfig –add mysqld ;service mysqld start

 

例如:使用rpm包安裝好mariadb服務后,如果我想將數據庫存放的路徑進行修改,如何實現?

vim /etc/my.cnf.d/server.cnf

[musqld]

datadir=/data/mysql

mkdir /data/mysql -pv

chown mysql:mysql /data/mysql

mysql_install_db –datadir=/data/mysql –user=mysql

systemctl start mariadb即可!

 

實戰:源碼編譯安裝

rz? 將源碼上傳到centos7.4系統中

第一步:安裝所需包

yum install bison bison-devel zlib-devel libcurl-devel libarchive-devel boost-devel gcc gcc-c++ cmake libevent-devel gnutls-devel libaio-devel openssl-devel ncurses-devel libxml2-devel

第二步:

useradd -r -s /sbin/nologin mysql? 創建用戶

tar -xvf mariadb-10.2.15.tar.gz?? 解包

mkdir -pv /app/mysql

chown mysql:mysql /app/mysql

mkdir -pv /data/mysqldb

第三步:編譯

cd mariadb-10.2.15

cmake . \

-DCMAKE_INSTALL_PREFIX=/app/mysql \

-DMYSQL_DATADIR=/data/mysqldb/ \

-DSYSCONFDIR=/etc \

-DMYSQL_USER=mysql \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_ARCHIVE_STORAGE_ENGINE=1 \

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

-DWITH_PARTITION_STORAGE_ENGINE=1 \

-DWITHOUT_MROONGA_STORAGE_ENGINE=1 \

-DWITH_DEBUG=0 \

-DWITH_READLINE=1 \

-DWITH_SSL=system \

-DWITH_ZLIB=system \

-DWITH_LIBWRAP=0 \

-DENABLED_LOCAL_INFILE=1 \

-DMYSQL_UNIX_ADDR=/app/mysql/mysql.sock \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci

make -j 8 && make install

第四步:后續與二進制安裝步驟一樣。

echo PATH=/app/mysql/bin:$PATH > /etc/profile.d/mysql.sh

. /etc/profile.d/mysql.sh

cd /app/mysql/

生成數據庫:

yum安裝默認放在/usr/bin下

cp /app/mysql/support-files/my-huge.cnf /etc/my.cnf

vim /etc/my.cnf

cp support-files/mysql.server /etc/init.d/mysqld? 準備服務腳本

setfacl -m u:mysql:rwx /app/mysql/? 設置mysql這個用戶對/app/mysql目錄有讀寫執行權限

service mysqld start 啟動服務

 

實戰:實現多實例,參考yum安裝的包或者二進制安裝的包都可以做多實例,我以yum安裝的包為例

yum install mariadb-server -y

rpm -ql mariadb-server

/usr/bin/mysqld_multi 這個程序本身就是用來實現多實例的,但條件是必須是同一個版本,不能做不同版本之間的多實例,靈活性較差!

每個實例有自己的數據庫路徑、有各自的端口號

第一步:

#以端口號為文件夾名,每個實例都有一套各自的配置文件

mkdir /mysqldb/{3306,3307,3308}/{etc,socket,pid,log,data} -pv

由于是yum安裝的,會自動生成mysql這個用戶

chown -R mysql:mysql /mysqldb? 將/mysqldb這個目錄及目錄下的所有文件的所有者和所屬組都改成mysql,mysql用戶就對/mysqldb這個目錄具有完全控制的權限。

第二步:生成各自的配置文件,配置文件放到各自的配置文件目錄下

cp /etc/my.cnf /mysqldb/3306/etc/ -a

cp /etc/my.cnf /mysqldb/3307/etc/ -a

cp /etc/my.cnf /mysqldb/3308/etc/ -a

vim /mysqldb/3306/etc/my.cnf

vim /mysqldb/3307/etc/my.cnf

vim /mysqldb/3308/etc/my.cnf

第三步:為各自的實例編制啟動腳本 腳本內容如下(腳本放在D:\linux面授班課件\課堂筆記\課堂筆記\做mysql多實例時用到的腳本)

cp mysqld /mysqldb/3306

cp mysqld /mysqldb/3307

cp mysqld /mysqldb/3308

vim /mysqldb/3307/mysqld

vim /mysqldb/3308/mysqld

chmod +x /mysqldb/3306/mysqld?? 加執行權限

chmod +x /mysqldb/3307/mysqld

chmod +x /mysqldb/3308/mysqld

chmod 700 /mysqldb/3306/mysqld? 修改權限

chmod 700 /mysqldb/3307/mysqld

chmod 700 /mysqldb/3308/mysqld

第四步:啟動腳本

/mysqldb/3306/mysqld start?? 啟動3306的mysqld服務

/mysqldb/3307/mysqld start?? 啟動3307的mysqld服務

/mysqldb/3308/mysqld start?? 啟動3308的mysqld服務

tree /mysqldb/3308

mysql -S /mysqldb/3308/socket/mysql.sock? 連接3308的mysql數據庫

第五步:現在各個實例都是沒有口令的,隨便登陸,這樣很不安全,可以加口令,方法:

修改的口令生效

這塊加完口令后,記得將啟動腳本中也要添加口令,如圖

vim /mysqldb/3308/mysqld

此時連接數據庫要mysql -S /mysqldb/3308/socket/mysql.sock -uroot -pcentos

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/100834

(0)
柳寶玉柳寶玉
上一篇 2018-06-11
下一篇 2018-06-11

相關推薦

  • Linux-標準IO和管道

    打開的文件都有一個fd:file description(文件描述符) [root@centos7 data]#exec 8<>/data/hosts [root@centos7 data]#ll /proc/$$/fd total 0 lrwx——. 1 root root 64 Mar 30 14:22 0 ->…

    2018-04-05
  • 兩臺主機之間搭建路由通信

    搭建路由通信

    2018-04-29
  • 加密與安全

    申請證書& ssh 服務基于key驗證

    2018-05-19
  • 正則表達式

      正則表達式:REGular EXPression 字符匹配: . 匹配一個隨機字符 \[^.]:匹配除了點以外任意的字符 [] 匹配指定范圍內的任意單個字符 [^] 匹配指定范圍外的任意單個字符 [:alnum:] 字母和數字 [:alpha:] 代表任何英文大小寫字符,亦即 A-Z, a-z [:blank:] 空白字符(空格和制表符) [:…

    2018-03-16
  • Linux基礎命令

    Linux基礎命令簡要介紹

    2018-03-30
  • Linux系統上命令的使用格式

    詳細介紹ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、 ifconfig ifconfig [-a] [-v] [-s] <interface> [[<AF>] <address>] [add <address…

    Linux筆記 2018-05-11
欧美性久久久久