二進制安裝MySQL數據庫

二進制安裝MySQL數據庫

實驗準備:

  1. 一個乾淨的centos7系統(確認是沒有安裝過數據庫的系統)
  2. 關閉防火牆和selinux
  3. 建立一個邏輯卷分區(由於數據庫存放數據通常都是在上漲的普通的分區到達分區容量極限時沒辦法在擴充分區因此使用邏輯卷分區比較好)
  4. 從官方平臺下載一個編譯過的一個二進制程序包(官方包下載地址:https://dev.mysql.com/downloads/mysql/)

準備階段:

  1. 建立邏輯卷分區:
[root@centos7 ~]# df
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/sda2      104806400  4233244 100573156   5% /
devtmpfs          998216        0    998216   0% /dev
tmpfs            1014056        0   1014056   0% /dev/shm
tmpfs            1014056    10452   1003604   2% /run
tmpfs            1014056        0   1014056   0% /sys/fs/cgroup
/dev/sr0        10491772 10491772         0 100% /misc/cd
/dev/sda1        1038336   167036    871300  17% /boot
/dev/sda3       52403200    32992  52370208   1% /data
tmpfs             202812        0    202812   0% /run/user/0
tmpfs             202812       12    202800   1% /run/user/42
[root@centos7 ~]# umount /data    (肯定這個分區沒有須要的數據了取消掛載)
  • 改成邏輯卷標識
[root@centos7 ~]# fdisk /dev/sda  
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): p

Disk /dev/sda: 214.7 GB, 214748364800 bytes, 419430400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000a8280

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200   211814399   104857600   83  Linux
/dev/sda3       211814400   316671999    52428800   83  Linux
/dev/sda4       316672000   419430399    51379200    5  Extended
/dev/sda5       316674048   325062655     4194304   82  Linux swap / Solaris

Command (m for help): t
Partition number (1-5, default 5): 3
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'

Command (m for help): p

Disk /dev/sda: 214.7 GB, 214748364800 bytes, 419430400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000a8280

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200   211814399   104857600   83  Linux
/dev/sda3       211814400   316671999    52428800   8e  Linux LVM
/dev/sda4       316672000   419430399    51379200    5  Extended
/dev/sda5       316674048   325062655     4194304   82  Linux swap / Solaris

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
  • 使用partprobe同步一下分區
[root@centos7 ~]# lsblk 
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  200G  0 disk 
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0  100G  0 part /
├─sda3   8:3    0   50G  0 part 
├─sda4   8:4    0    1K  0 part 
└─sda5   8:5    0    4G  0 part [SWAP]
sr0     11:0    1   10G  0 rom  /misc/cd
[root@centos7 ~]# partprobe    
Warning: Unable to open /dev/sr0 read-write (Read-only file system).  /dev/sr0 has been opened read-only.
  • 更改成物理卷
[root@centos7 ~]# pvcreate /dev/sda3
WARNING: xfs signature detected on /dev/sda3 at offset 0. Wipe it? [y/n]: y
  Wiping xfs signature on /dev/sda3.
  Physical volume "/dev/sda3" successfully created.
[root@centos7 ~]# pvs
  PV         VG Fmt  Attr PSize  PFree 
  /dev/sda3     lvm2 ---  50.00g 50.00g
  • 把物理卷加爲卷組並起個名字
[root@centos7 ~]# vgcreate vg_data /dev/sda3
  Volume group "vg_data" successfully created
[root@centos7 ~]# vgs
  VG      #PV #LV #SN Attr   VSize   VFree  
  vg_data   1   0   0 wz--n- <50.00g <50.00g
  • 建立邏輯卷爲MySQL並設定爲40G空間(空行以後的都是示例防止大家設錯空間忘了怎麼刪!)
[root@centos7 ~]# lvcreate -n mysql -L 40G  vg_data
  Logical volume "mysql" created.
[root@centos7 ~]# lvs
  LV    VG      Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  mysql vg_data -wi-a----- 40.00g                                                    

[root@centos7 ~]# lvremove /dev/vg_data/mysql 
Do you really want to remove active logical volume vg_data/mysql? [y/n]: y
  Logical volume "mysql" successfully removed
[root@centos7 ~]# lvcreate -n mysql -l 100%free  vg_data  (這裏是把全部的剩餘空間都設爲邏輯卷)
  Logical volume "mysql" created.
[root@centos7 ~]# lvs
  LV    VG      Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  mysql vg_data -wi-a----- <50.00g
  • 格式化分區並建立文件系統
[root@centos7 ~]# mkfs.xfs /dev/vg_data/mysql
meta-data=/dev/vg_data/mysql     isize=512    agcount=4, agsize=3276544 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=13106176, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=6399, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
  • 掛載分區並永久保存(更改/data那一行)
[root@centos7 ~]# lsblk -f   (注意使用邏輯卷對應的UUID)
NAME              FSTYPE      LABEL           UUID                                   MOUNTPOINT
sda                                                                                  
├─sda1            xfs                         0f7c8887-58c8-4c16-98d4-32cf5635006a   /boot
├─sda2            xfs                         71131d8c-e6d0-4104-b270-dcb8d5ae959a   /
├─sda3            LVM2_member                 IRcHvr-fkfh-eutS-0de9-RGsJ-4pi3-mGKmJd 
│ └─vg_data-mysql xfs                         7d3d4b4d-66c1-43d7-8d33-9de94d6b812d   /mnt
├─sda4                                                                               
└─sda5            swap                        045c4250-e51f-4af0-a2f5-6c248700e1fb   [SWAP]
sr0               iso9660     CentOS 7 x86_64 2018-11-26-14-22-58-00                 /misc/cd
[root@centos7 ~]# vim /etc/fstab
UUID=7d3d4b4d-66c1-43d7-8d33-9de94d6b812d /data                   xfs     defaults        0 0
[root@centos7 ~]# mount -a  (從新讀取配置文件進行掛載)
[root@centos7 ~]# lsblk 
NAME              MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                 8:0    0  200G  0 disk 
├─sda1              8:1    0    1G  0 part /boot
├─sda2              8:2    0  100G  0 part /
├─sda3              8:3    0   50G  0 part 
│ └─vg_data-mysql 253:0    0   50G  0 lvm  /data
├─sda4              8:4    0    1K  0 part 
└─sda5              8:5    0    4G  0 part [SWAP]
sr0                11:0    1   10G  0 rom  /misc/cd
  1. 準備二進制程序包(我是從服務器傳下來的沒有的能夠去官網下載,放在哪一個目錄均可以。)
[root@centos7 ~]# rz -E
rz waiting to receive.
[root@centos7 ~]# ls
anaconda-ks.cfg  Downloads                                    Music     Templates
Desktop          initial-setup-ks.cfg                         Pictures  Videos
Documents        mariadb-10.2.29-linux-systemd-x86_64.tar.gz  Public

實驗階段:

  • 確認系統上沒有數據庫文件
[root@centos7 ~]# rpm -qa mariadb*
  • 建立文件夾和建立用戶並讓他有讀、執行權限。
[root@centos7 ~]# mkdir /data/mysql
[root@centos7 ~]# useradd -r -s /sbin/nologin -d /data/mysql mysql
[root@centos7 ~]# ll /data
total 0
drwxr-xr-x 2 root root 6 Nov 19 16:12 mysql
  • 程序包解壓到/usr/local/目錄下
[root@centos7 ~]# tar xvf mariadb-10.2.29-linux-systemd-x86_64.tar.gz -C /usr/local/
  • 更改用戶和所屬組(先把MariaDB目錄作成軟鏈接)
[root@centos7 ~]# ll /usr/local/
total 0
drwxr-xr-x.  2 root root   6 Apr 11  2018 bin
drwxr-xr-x.  2 root root   6 Apr 11  2018 etc
drwxr-xr-x.  2 root root   6 Apr 11  2018 games
drwxr-xr-x.  2 root root   6 Apr 11  2018 include
drwxr-xr-x.  2 root root   6 Apr 11  2018 lib
drwxr-xr-x.  2 root root   6 Apr 11  2018 lib64
drwxr-xr-x.  2 root root   6 Apr 11  2018 libexec
drwxrwxr-x  13 yang yang 294 Nov  8 01:21 mariadb-10.2.29-linux-systemd-x86_64
drwxr-xr-x.  2 root root   6 Apr 11  2018 sbin
drwxr-xr-x.  5 root root  49 Sep  5 16:17 share
drwxr-xr-x.  2 root root   6 Apr 11  2018 src
[root@centos7 local]# ln -s mariadb-10.2.29-linux-systemd-x86_64/ mysql
[root@centos7 local]# chown -R root.root mysql/
[root@centos7 local]# ll 
total 0
drwxr-xr-x.  2 root root   6 Apr 11  2018 bin
drwxr-xr-x.  2 root root   6 Apr 11  2018 etc
drwxr-xr-x.  2 root root   6 Apr 11  2018 games
drwxr-xr-x.  2 root root   6 Apr 11  2018 include
drwxr-xr-x.  2 root root   6 Apr 11  2018 lib
drwxr-xr-x.  2 root root   6 Apr 11  2018 lib64
drwxr-xr-x.  2 root root   6 Apr 11  2018 libexec
drwxrwxr-x  13 root root 294 Nov  8 01:21 mariadb-10.2.29-linux-systemd-x86_64
lrwxrwxrwx   1 root root  37 Nov 19 16:22 mysql -> mariadb-10.2.29-linux-systemd-x86_64/
drwxr-xr-x.  2 root root   6 Apr 11  2018 sbin
drwxr-xr-x.  5 root root  49 Sep  5 16:17 share
drwxr-xr-x.  2 root root   6 Apr 11  2018 src
  • 查看二進制文件並把二進制文件目錄加到PATH變量裏之後使用方便不用寫絕對路徑
[root@centos7 local]# ls mysql/bin/
aria_chk                 mysqladmin                  mysqlshow
aria_dump_log            mysqlbinlog                 mysqlslap
aria_ftdump              mysqlcheck                  mysqltest
aria_pack                mysql_client_test           mysqltest_embedded
aria_read_log            mysql_client_test_embedded  mysql_tzinfo_to_sql
galera_new_cluster       mysql_config                mysql_upgrade
galera_recovery          mysql_convert_table_format  mysql_waitpid
garbd                    mysqld                      mytop
innochecksum             mysqld_multi                perror
mariabackup              mysqld_safe                 replace
mariadb_config           mysqld_safe_helper          resolveip
mariadb-service-convert  mysqldump                   resolve_stack_dump
mbstream                 mysqldumpslow               sst_dump
msql2mysql               mysql_embedded              tokuftdump
myisamchk                mysql_find_rows             tokuft_logprint
myisam_ftdump            mysql_fix_extensions        wsrep_sst_common
myisamlog                mysqlhotcopy                wsrep_sst_mariabackup
myisampack               mysqlimport                 wsrep_sst_mysqldump
my_print_defaults        mysql_ldb                   wsrep_sst_rsync
myrocks_hotbackup        mysql_plugin                wsrep_sst_rsync_wan
mysql                    mysql_secure_installation   wsrep_sst_xtrabackup
mysqlaccess              mysql_setpermission         wsrep_sst_xtrabackup-v2
[root@centos7 local]# echo 'PATh=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
[root@centos7 local]# . /etc/profile.d/mysql.sh
[root@centos7 support-files]# echo $PATH   (使用這個命令檢查一下)
/usr/local/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
  • 準備配置文件(使用軟件包裏自帶的配置文件稍加修改使用就能夠了)
[root@centos7 local]# cd mysql/
[root@centos7 mysql]# ls
bin      data               include         man         README-wsrep  sql-bench
COPYING  docs               INSTALL-BINARY  mysql-test  scripts       support-files
CREDITS  EXCEPTIONS-CLIENT  lib             README.md   share         THIRDPARTY
[root@centos7 mysql]# ls support-files/  
binary-configure  my-innodb-heavy-4G.cnf  my-small.cnf         mysql.server  wsrep.cnf
magic             my-large.cnf            mysqld_multi.server  policy        wsrep_notify
my-huge.cnf       my-medium.cnf           mysql-log-rotate     systemd
[root@centos7 mysql]# less support-files/my-huge.cnf  (查看一下文件選擇一個合適的內存大小,這個是最大的 1G-2G) 
[root@centos7 mysql]# 
[root@centos7 mysql]# cp -b support-files/my-huge.cnf /etc/my.cnf
cp: overwrite ‘/etc/my.cnf’? y    (把這個文件拷貝到配置文件目錄下並備份原有文件)

修改配置文件
[root@centos7 mysql]# vim /etc/my.cnf

# The MySQL server
[mysqld]
datadir=/data/mysql   (加入這一行指定路徑就能夠了)
  • 使用軟件包自帶腳本生成數據庫
[root@centos7 mysql]# cd scripts/
[root@centos7 scripts]# ls
mysql_install_db
[root@centos7 scripts]# pwd
/usr/local/mysql/scripts

這裏要注意一下要是你要寫相對路徑必須在scripts目錄下執行,要不就寫成絕對路徑。
[root@centos7 scripts]# /usr/local/mysql/scripts/mysql_install_db --datadir=/data/mysql --user=mysql
Installing MariaDB/MySQL system tables in '/data/mysql' ...
2019-11-19 16:41:29 140185403569984 [Warning] 'THREAD_CONCURRENCY' is deprecated and will be removed in a future release.
2019-11-19 16:41:29 140185402984192 [Warning] Failed to load slave replication state from table mysql.gtid_slave_pos: 1146: Table 'mysql.gtid_slave_pos' doesn't exist
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system


PLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER !
To do so, start the server, then issue the following commands:

'/usr/local/mysql/bin/mysqladmin' -u root password 'new-password'
'/usr/local/mysql/bin/mysqladmin' -u root -h centos7.localdomain password 'new-password'

Alternatively you can run:
'/usr/local/mysql/bin/mysql_secure_installation'

which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.

See the MariaDB Knowledgebase at http://mariadb.com/kb or the
MySQL manual for more instructions.

You can start the MariaDB daemon with:
cd '/usr/local/mysql' ; /usr/local/mysql/bin/mysqld_safe --datadir='/data/mysql'

You can test the MariaDB daemon with mysql-test-run.pl
cd '/usr/local/mysql/mysql-test' ; perl mysql-test-run.pl

Please report any problems at http://mariadb.org/jira

The latest information about MariaDB is available at http://mariadb.org/.
You can find additional information about the MySQL part at:
http://dev.mysql.com
Consider joining MariaDB's strong and vibrant community:
https://mariadb.org/get-involved/

[root@centos7 scripts]# ll /data/mysql/    (查看數據庫生成文件)
total 110660
-rw-rw---- 1 mysql mysql    16384 Nov 19 16:41 aria_log.00000001
-rw-rw---- 1 mysql mysql       52 Nov 19 16:41 aria_log_control
-rw-rw---- 1 mysql mysql      938 Nov 19 16:41 ib_buffer_pool
-rw-rw---- 1 mysql mysql 12582912 Nov 19 16:41 ibdata1
-rw-rw---- 1 mysql mysql 50331648 Nov 19 16:41 ib_logfile0
-rw-rw---- 1 mysql mysql 50331648 Nov 19 16:41 ib_logfile1
drwx------ 2 mysql mysql     4096 Nov 19 16:41 mysql
-rw-rw---- 1 mysql mysql    29310 Nov 19 16:41 mysql-bin.000001
-rw-rw---- 1 mysql mysql       19 Nov 19 16:41 mysql-bin.index
-rw-rw---- 1 mysql mysql        7 Nov 19 16:41 mysql-bin.state
drwx------ 2 mysql mysql       20 Nov 19 16:41 performance_schema
drwx------ 2 mysql mysql       20 Nov 19 16:41 test
  • 設置啓動相關文件
[root@centos7 support-files]# cp /usr/local/mysql/support-files/systemd/mariadb.service /usr/lib/systemd/system/
[root@centos7 support-files]# ll /usr/lib/systemd/system/ |grep mariadb
-rw-r--r--  1 root root 5231 Nov 19 16:45 mariadb.service


centos6 的話可使用mysql.server
[root@centos7 support-files]# ls
binary-configure  my-innodb-heavy-4G.cnf  my-small.cnf         mysql.server  wsrep.cnf
magic             my-large.cnf            mysqld_multi.server  policy        wsrep_notify
my-huge.cnf       my-medium.cnf           mysql-log-rotate     systemd
[root@centos7 support-files]# cp mysql.server /etc/init.d/mysqld
[root@centos7 support-files]# chkconfig --list mysqld

Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.

error reading information on service mysqld: No such file or direct
[root@centos7 support-files]# chkconfig --add mysqld  (把mysql註冊爲服務以後可使用server來管理)
[root@centos7 support-files]# chkconfig --list mysqld  (在使用chkconfig查看你服務)
  • 再查看一下文件確保設置的路徑正確,就能夠啓動服務了。
[root@centos7 support-files]# vim /usr/lib/systemd/system/mariadb.service 
[root@centos7 support-files]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 10.2.29-MariaDB-log MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> 
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)

MariaDB [(none)]> 
(已經能夠正常使用了可是密碼沒有設置誰均可以登陸從新設置一下密碼)
  • 跑一遍安全加固腳本(這也是軟件包自帶的)
(安全加固腳本路徑)
[root@centos7 support-files]# which mysql_secure_installation 
/usr/local/mysql/bin/mysql_secure_installation
[root@centos7 support-files]# mysql_secure_installation 

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):   (輸入當前密碼,回車不輸入任何字符)
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] y (是否要設置密碼輸y)
New password: 
Re-enter new password: (輸入兩遍密碼)
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y   (是否刪除默認用戶,輸入y)
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y   (不容許root遠程登陸,輸入y安全考慮)
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y  (是否刪除測試數據庫test,生產中用不到刪掉y)
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y  (是否從新加載特權表,輸入y)
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

(直接使用mysql不能夠登錄了)
[root@centos7 support-files]# mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
[root@centos7 support-files]# mysql -p123456  (-p輸入密碼登陸。注意:-p後不要加空格)
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 19
Server version: 10.2.29-MariaDB-log MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> exit
Bye
[root@centos7 support-files]# mysql -uroot -p123456  (上面登陸不寫用戶的話默認就爲root登陸既管理員)注意:這裏的root不是操做系統的root他只是針對於MySQL數據庫的root用戶不要搞混了。
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 20
Server version: 10.2.29-MariaDB-log MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> exit
Bye
相關文章
相關標籤/搜索