centos7 源碼安裝mysql5.6

這篇博客的主要內容是在CentOS7服務器上搭建一個MySQL5.6版本的數據庫服務。

1、我的當前環境:

    [root@local-test ~]# cat /proc/cpuinfo |grep 'physical id'|wc -l
    2
    [root@local-test ~]# free -h
                          total        used        free      shared  buff/cache   available
    Mem:           2.8G        127M        2.4G        9.5M        191M        2.5G
    Swap:          2.0G          0B        2.0G
    [root@local-test ~]# uname -sr
    Linux 3.10.0-1062.el7.x86_64

2、創建mysql服務的相關目錄和用戶

a.創建安裝目錄:

    [root@local-test ~]# mkdir /opt/mysql

b.創建數據目錄:

    [root@local-test ~]# mkdir /data/mysql/data -p

c.添加mysql用戶

    [root@local-test ~]# useradd mysql -M -s /sbin/nologin        #-M:不創建家目錄,-s /sbin/nologin :不允許該登錄

3、下載MySQL安裝包

下載MySQL-5.6.47版本:官網下載地址:https://dev.mysql.com/downloads/mysql/

    [root@local-test ~]# wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.47-linux-glibc2.12-x86_64.tar.gz

4、安裝MySQL:

a.解壓:

    [root@local-test ~]# tar xf mysql-5.6.47-linux-glibc2.12-x86_64.tar.gz -C /opt/mysql/

b.重命名目錄:

    [root@local-test ~]# cd /opt/mysql/
    [root@local-test mysql]# mv mysql-5.6.47-linux-glibc2.12-x86_64/* .
    [root@local-test mysql]# rm -rf mysql-5.6.47-linux-glibc2.12-x86_64/
    [root@local-test mysql]# ls
    bin  data  docs  include  lib  LICENSE  man  mysql-test  README  scripts  share  sql-bench  support-files

c.安裝mysql:把安裝目錄和數據目錄授權給mysql用戶

    [root@local-test mysql]# chown -R mysql.mysql /opt/mysql/ /data/mysql/data/
    [root@local-test mysql]# ./scripts/mysql_install_db --basedir=/opt/mysql/ --datadir=/data/mysql/data/ --user=mysql
    FATAL ERROR: please install the following Perl modules before executing ./scripts/mysql_install_db:
    Data::Dumper

出現這種問題很容易解決,仔細看錯誤信息可以知道,我們需要安裝perl相關模塊才能執行這個初始化腳本:

    [root@local-test mysql]# yum install perl-devel autoconf -y

安裝完成之後再次執行初始化命令:

    [root@local-test mysql]# ./scripts/mysql_install_db --basedir=/opt/mysql/ --datadir=/data/mysql/data/ --user=mysql

返回信息如下:限於篇幅,此處不在粘貼,主要注意看是否出現兩個OK

   ......

    OK

    ......

    OK
    
    ......
    此時說明你的mysql服務已經成功的安裝到服務器上了,但是爲了生產安全我們需要做一些基本的優化如下:

5、新安裝MySQL基礎優化:

a. my.cnf文件參數設置:

    [root@local-test mysql]# vim /etc/my.cnf
[mysqld]
#基礎信息
basedir=/opt/mysql
datadir=/data/mysql/data
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
port=3306
lower_case_table_names=1
server_id=1
#連接MySQL服務器時使用的字符編碼設置
init_connect='SET collation_connection = utf8mb4_unicode_ci'
init_connect='SET NAMES utf8mb4'
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
skip-character-set-client-handshake

[client]
#clinet的信息要與[mysqld]中的信息保持一致,特別注意socket的位置
port = 3306
socket = /var/lib/mysql/mysql.sock
default_character_set=utf8mb4

[mysqld_safe]
log-error=/var/log/mysql/mysql.log
pid-file=/var/lib/mysql/mysql.pid

[mysql]
default_character_set=utf8mb4


b. 啓動腳本優化:
二進制包安裝的mysql的啓動腳本默認是在/opt/mysql/support-files目錄下的mysql.server文件,我一般會把它放到/etc/init.d/下使用chkconfig管理,CentOS7一樣適用。

    [root@local-test support-files]# cp  /opt/mysql/support-files/mysql.server /etc/init.d/mysqld
    [root@local-test support-files]# chkconfig --add mysqld
    [root@local-test support-files]# chkconfig --list |grep mysqld
    
    mysqld         	0:off	1:off    	2:on	    3:on	4:on	5:on	    6:off

c.啓動MySQL服務

    [root@local-test support-files]# /etc/init.d/mysqld start
    Starting MySQL.Logging to '/var/log/mysql/mysql.log'.
    200228 03:45:07 mysqld_safe Directory '/var/lib/mysql' for UNIX socket file don't exists.
     ERROR! The server quit without updating PID file (/data/mysql/data/local-test.pid).

這個錯誤提示我們沒有/var/log/mysql這個目錄,所以需要新建一個,注意別忘了授權!

    [root@local-test support-files]# mkdir /var/lib/mysql
    [root@local-test support-files]# chown -R mysql.mysql /var/lib/mysql/

再次啓動

    [root@local-test support-files]# /etc/init.d/mysqld start    
    Starting MySQL.Logging to '/var/log/mysql/mysql.log'.
    .... SUCCESS!
    [root@local-test support-files]#

d.登陸mysql

    [root@local-test support-files]# mysql
    -bash: mysql: command not found                    #/opt/mysql不在path搜索路徑裏
    [root@local-test support-files]# ln -s /opt/mysql/bin/* /usr/bin/
    [root@local-test support-files]# mysql
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 2
    Server version: 5.6.47 MySQL Community Server (GPL)

    Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.

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

    mysql>

e.設置mysql管理員初始密碼:

mysql>use mysql;
mysql> update user set password=password("root") where user='root';
mysql> flush privileges;
mysql> exit;      
 

#service mysql restart

密碼生效;

再次登陸就要使用密碼了!

    [root@local-test support-files]# mysql -uroot -p
遠程連接mysql、Navicat等工具連接的時候、就是遠程連接、而不是登陸的賬號密碼了。

若遠程連接賬號密碼都是對的、但是連接不上、可能就是防火牆沒有添加3306端口、添加上就OK了

配置:

登陸mysql   

mysql>use mysql;
mysql>GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
mysql> flush privileges;
mysql> exit;      

 

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