从零开始的MYSQL --- MySQL安装及环境部署

Posted 刘靖源

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从零开始的MYSQL --- MySQL安装及环境部署相关的知识,希望对你有一定的参考价值。

官网下载地址:dev.mysql.com/downloads  
目前实验环境中使用的MySQL版本:mysql-5.6.29-linux-glibc2.5-x86_64.tar.gz
linux下直接wget的命令:wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.29-linux-glibc2.5-x86_64.tar.gz
国内镜像网站:http://mirrors.sohu.com/
 
安装mysql:
    1.解压:
        mkdir -p /data/mysql
        tar zxvf /mnt/mysql-5.6.29-linux-glibc2.5-x86_64.tar.gz
        ln -s /mnt/mysql-5.6.29-linux-glibc2.5-x86_64 /usr/local/mysql
        cd /usr/local/mysql
        cp support-files/mysql.server /etc/init.d
 
    2.创建用户组:
        groupadd mysql
        useradd -g mysql -M -s /sbin/nologin mysql
 
    3.更改环境变量:
        echo $PATH
        vim  /etc/profile
        echo "export PATH=$PATH:/usr/local/mysql/bin">>/etc/profile
        source  /etc/profile
 
    4.创建必须的目录,更改权限:
        mkdir /data/mysql/mysql3306/{data,tmp,logs}
        chown -R mysql:mysql /data/mysql/mysql3306/
        chown -R mysql:mysql /opt/mysql
        chown -R mysql:mysql /usr/local/mysql
 
    5.创建配置文件,更改配置文件:
        %s/3306/3316/g  按需更改
        socket = /tmp/mysql3376.sock
        innodb_date_file_path = ibdata1:100M:autoextend
 
    6.初始化:
        cd /usr/local/mysql
        ./scripts/mysql_install_db --defaults-file=/etc/my.cnf    看到两次ok即可
 
    7.启动:
        /etc/init.d/mysql start    ||    service mysql start
 
    8.只能在初始化完成后做的安全加固:
       1). 安装完mysql-server 会提示可以运行mysql_secure_installation。运行mysql_secure_installation会执行几个设置:
           a)为root用户设置密码
           b)删除匿名账号
           c)取消root用户远程登录
           d)删除test库和对test库的访问权限
           e)刷新授权表使修改生效
    
        2).select user,host,password from mysql.user;
            delete from mysql.user where user != ‘root‘ ot host != ‘localhost‘;
            truncate table mysql.db
            drop database test;
            flush privileges;
 
    9.关闭mysql
            /usr/local/mysql/bin/mysqladmin -S /tmp/mysql3376.sock  shutdown 
            ss -tnl | grep 3306
            sock 是unix domain的一种通信方式  监听
 
我碰到的错误及解决办法:
[[email protected] mysql]# ./scripts/mysql_install_db --defaults-file=/data/mysql/mysql3376/my3376.cnf 
WARNING: The host ‘mysqldb15‘ could not be looked up with /usr/local/mysql/bin/resolveip.
This probably means that your libc libraries are not 100 % compatible
with this binary MySQL version. The MySQL daemon, mysqld, should work
normally with the exception that host name resolving will not work.
This means that you should use IP addresses instead of hostnames
when specifying MySQL privileges !
     这个错误应该是在/etc/hosts里面没有解析,解决方法:
     vi /etc/hosts
     192.168.6.15 mysqldb15
 
Installing MySQL system tables...2016-03-31 14:50:18 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2016-03-31 14:50:18 0 [Note] ./bin/mysqld (mysqld 5.6.29-log) starting as process 6160 ...
     缺少explicit_defaults_for_timestamp参数,加上即可
 
[[email protected]localhost]# tail -f error3376.log 
2016-03-31 15:00:16 6265 [Note] InnoDB: Using atomics to ref count buffer pool pages
2016-03-31 15:00:16 6265 [Note] InnoDB: The InnoDB memory heap is disabled
2016-03-31 15:00:16 6265 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2016-03-31 15:00:16 6265 [Note] InnoDB: Memory barrier is not used
2016-03-31 15:00:16 6265 [Note] InnoDB: Compressed tables use zlib 1.2.3
2016-03-31 15:00:16 6265 [Note] InnoDB: Using Linux native AIO
2016-03-31 15:00:16 6265 [Note] InnoDB: Not using CPU crc32 instructions
2016-03-31 15:00:16 6265 [Note] InnoDB: Initializing buffer pool, size = 1.0G
2016-03-31 15:00:16 6265 [Note] InnoDB: Completed initialization of buffer pool
2016-03-31 15:00:16 6265 [Note] InnoDB: Restoring page 0 of tablespace 0
2016-03-31 15:00:16 6265 [Warning] InnoDB: Doublewrite does not have page_no=0 of space: 0
2016-03-31 15:00:16 6265 [ERROR] InnoDB: space header page consists of zero bytes in data file ./ibdata1
2016-03-31 15:00:16 6265 [ERROR] InnoDB: Could not open or create the system tablespace. If you tried to add new data files to the system tablespace, and it failed here, you should now edit innodb_data_file_path in my.cnf back to what it was, and remove the new ibdata files InnoDB created in this failed attempt. InnoDB only wrote those files full of zeros, but did not yet use them in any way. But be careful: do not remove old data files which contain your precious data!
2016-03-31 15:00:16 6265 [ERROR] Plugin ‘InnoDB‘ init function returned error.
2016-03-31 15:00:16 6265 [ERROR] Plugin ‘InnoDB‘ registration as a STORAGE ENGINE failed.
2016-03-31 15:00:16 6265 [ERROR] Unknown/unsupported storage engine: InnoDB
2016-03-31 15:00:16 6265 [ERROR] Aborting
2016-03-31 15:00:16 6265 [Note] Binlog end
2016-03-31 15:00:16 6265 [Note] ./bin/mysqld: Shutdown complete
 
     删除data下面的数据,重新初始化
 
启动 && 登入:
     /usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/mysql3306/my3306.cnf  &
     mysql -uroot -p -S /tmp/mysql3306.sock 
 
设置root密码:
            mysqladmin -u root password ‘123‘
            或者
            mysql>set password for ‘root‘@‘localhost‘=password(‘123‘);
            mysql>flush privileges;
 
创建关闭用户:
            grant shutdown  on *.* to [email protected]‘localhost‘ identified by ‘1234‘;
            flush privileges;
            mysqladmin -S /tmp/mysql3306.sock shutdown  --user=amin --password=1234
        或者
            mysqladmin -S /tmp/mysql3306.sock shutdown  --user=amin -p1234
 
设置开机启动,根据自己的需求:echo "/usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/mysql3306/my3306.cnf  &" >>/etc/rc.local
 
每次敲这些命令都太繁琐,我们可以将启动关闭写成相关脚本:
设置启动脚本:/usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/mysql3306/my3306.cnf  &
设置关机脚本:mysqladmin -S /tmp/mysql3306.sock shutdown  --user=root--password=123
设置重启脚本:mysqladmin -S /tmp/mysql3306.sock shutdown  --user=root --password=123
                         /usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/mysql3306/my3306.cnf  &
导入数据:mysql -uroot -p -S /tmp/mysql3306.sock < backup.sql 
 

以上是关于从零开始的MYSQL --- MySQL安装及环境部署的主要内容,如果未能解决你的问题,请参考以下文章

从零开始的MYSQL02 --- MySQL启动方式及故障排查,多实例搭建

从零开始:mysql基于Amoeba的集群搭建

从零开始搭建Java开发环境第二篇:如何在windows10里安装MySQL

从零开始学习MySQL调试跟踪

从零开始学mysql

mysql从零开始