mysql5.7版本tar包手动安装---redhat7.0

1.官网下载安装包,删除系统自带的mariadb,查到几个包,卸载几个包,总之得删除干净

[root@localhost Desktop]# yum list | grep mariadb
mariadb-libs.x86_64                    1:5.5.41-2.el7_0            @anaconda/7.1
[root@localhost Desktop]# yum remove mariadb-libs.x86_64 -y  ==>删除这个包
[root@localhost Desktop]# yum list | grep mariadb  ==>已经查询不到mariadb
[root@localhost Desktop]# ls
mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz    ==>这是安装包

2.创建用户和组以及将安装包移动到安装目录( /usr/local/ )下

[root@localhost Desktop]# groupadd mysql
[root@localhost Desktop]# useradd -g mysql mysql
[root@localhost Desktop]# mv mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz /usr/local/
[root@localhost Desktop]# cd /usr/local/
[root@localhost local]# ls
bin  games    lib    libexec                                    sbin   src
etc  include  lib64  mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz  share

3.解压安装包,并文件重命名为mysql,删除安装包(也可以不删除,有强迫症的都会删),确定安装路径是在 /usr/local 目录下

[root@localhost local]# tar -zxvf mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz
[root@localhost local]# ls
bin    include  libexec                                    sbin
etc    lib      mysql-5.7.16-linux-glibc2.5-x86_64         share
games  lib64    mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz  src
[root@localhost local]# mv mysql-5.7.16-linux-glibc2.5-x86_64 mysql  ==>改名为mysql
[root@localhost local]# ls
bin  games    lib    libexec  mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz  share
etc  include  lib64  mysql    sbin                                       src
[root@localhost local]# rm mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz 
rm: remove regular file ‘mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz’? y
[root@localhost local]# ls
bin  etc  games  include  lib  lib64  libexec  mysql  sbin  share  src

4.编辑配置文件/ect/my.cnf,把/usr/local/mysql/support-files/my-defaults-cnf复制到/etc/目录下,并改名为my.cnf,也可以自己手动创建编辑

[root@localhost support-files]# cp -a my-default.cnf /etc/my.cnf 
[root@localhost local]# vim /etc/my.cnf
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8 
socket=/var/lib/mysql/mysql.sock

[mysqld]
#设置3306端口
port = 3306 
socket=/var/lib/mysql/mysql.sock
# 设置mysql的安装目录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/data
#设置mysql数据库的日志目录
#log-error=/var/log/mysqld.log ==>若这里指定了日志文件路径获取密码则需要到日志文件中查找, grep 'temporary passwd' /var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid # 允许最大连接数 max_connections
=200 # 服务端使用的字符集默认为utf-8编码的latin1字符集 character-set-server=utf8 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB max_allowed_packet=16M

5.初始化数据库

MySQL5.7.6之前版本都是用mysql_install_db这个命令

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

到了5.7版本后已经没有scripts这个目录,mysql_install_db也被移动到了bin目录下,5.7.6版本后这个命令已被弃用,若在5.7.6之后的版本用这个命令会报错

[root@localhost local]# ./mysql/bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
2018-12-10 13:42:04 [WARNING] mysql_install_db is deprecated. Please consider switching to mysqld --initialize  ==>系统提示换成这个命令及参数
2018-12-10 13:42:08 [ERROR]   Child process: /usr/local/mysql/bin/mysqldterminated prematurely with errno= 32
2018-12-10 13:42:08 [ERROR]   Failed to execute /usr/local/mysql/bin/mysqld --bootstrap --datadir=/usr/local/mysql/data --lc-messages-dir=/usr/local/mysql/share --lc-messages=en_US --basedir=/usr/local/mysql
-- server log begin --
2018-12-10T05:42:04.757607Z 0 [Warning] --bootstrap is deprecated. Please consider using --initialize instead

-- server log end --

5.7.6之后版本的初始化命令,在执行前要确保 数据库的 data 目录 是一个空目录,不让也会报错,处理方式是执行 rf 清空目录,报错信息如下

2018-12-10T11:08:53.586149Z 0 [ERROR] --initialize specified but the data directory has files in it. Aborting.

开始初始化数据库

[root@localhost local]# ./mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ ==>5.7执行初始化命令
2018-12-10T11:37:30.625023Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2018-12-10T11:37:30.625070Z 0 [Warning] 'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes should be used with strict mode. They will be merged with strict mode in a future release.
2018-12-10T11:37:30.625074Z 0 [Warning] 'NO_AUTO_CREATE_USER' sql mode was not set.
2018-12-10T11:37:32.454989Z 0 [Warning] InnoDB: New log files created, LSN=45790
2018-12-10T11:37:32.659920Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2018-12-10T11:37:32.749779Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: fb994d89-fc6f-11e8-ab5f-4e052dd49fa2.
2018-12-10T11:37:32.765740Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2018-12-10T11:37:32.766627Z 1 [Note] A temporary password is generated for root@localhost: dsqO!0eNa>V2  ==>注意这个是初始的root密码

5.设置开机自动启动脚本

复制启动脚本到/etc/rc.d/init.d/ 目录下并命名为mysqld,确认这个脚本具备X权限,若无执行 chmod 加权限

[root@localhost local]# cp mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@localhost local]# ll /etc/rc.d/init.d/mysqld
-rwxr-xr-x. 1 root root 10886 Dec 10 19:49 /etc/rc.d/init.d/mysqld

把mysqld服务加入到系统服务

[root@localhost local]# chkconfig --add mysqld
[root@localhost local]# chkconfig --list | grep 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]'.

mysqld             0:off    1:off    2:on    3:on    4:on    5:on    6:off  ==>服务已生效

7.启动数据库服务

[root@localhost local]# systemctl start mysqld
[root@localhost local]# systemctl status mysqld
mysqld.service - LSB: start and stop MySQL
   Loaded: loaded (/etc/rc.d/init.d/mysqld)
   Active: active (running) since Mon 2018-12-10 20:00:22 CST; 8s ago   ==>服务一启动
  Process: 33307 ExecStart=/etc/rc.d/init.d/mysqld start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/mysqld.service
           ├─33318 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data --p...
           └─33522 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/...

Dec 10 20:00:22 localhost.localdomain mysqld[33307]: Starting MySQL.. SUCCESS!
Dec 10 20:00:22 localhost.localdomain systemd[1]: Started LSB: start and stop MySQL.

8.登入数据库修改密码,并设置允许远程登入

[root@localhost local]# /usr/local/mysql/bin/mysql -uroot -p'dsqO!0eNa>V2'
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.7.16

Copyright (c) 2000, 2016, 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> 

修改密码

mysql> SET PASSWORD FOR 'root'@localhost=PASSWORD('redhat');
Query OK, 0 rows affected, 1 warning (0.01 sec)

设置主机可以远程登入

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'redhat' WITH GRANT OPTION;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;  ==>刷新权限表

9.配置环境变量

[root@localhost local]# vim /etc/profile

# MySQL Environment Variable Settings
export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin

[root@localhost local]# source /etc/profile

10.配置防火墙

[root@localhost local]# firewall-cmd --permanent --add-port=3306/tcp
success
[root@localhost local]# firewall-cmd --reload 
success

11.安装基本完成

猜你喜欢

转载自www.cnblogs.com/lczz/p/10099871.html
今日推荐