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=/tmp/mysql.sock [mysqld] #设置3306端口 port = 3306 socket=/tmp/mysql.sock # 设置mysql的安装目录 basedir=/usr/local/mysql # 设置mysql数据库的数据的存放目录 datadir=/usr/local/mysql/data # 允许最大连接数 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密码
6.设置开机自动启动脚本
复制启动脚本到/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]# service mysqld start
[root@localhost local]# service mysqld status
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
安装基本完成