中间装过几次mysql,几乎每一次都会遇到各种问题,今天索性完整记录一边安装过程。
虚拟机环境为CentOS 7,mysql版本为5.7.20。关于mysql-5.7.18及其以上的版本取消了my.cnf文件,所以可能会导致一部分人再参考教程安装时会出现错误。之前自己也安装过几次,因为没有记录所以每次都磕磕绊绊,这次就详细记录一下。
首先使用wget命令去下载mysql的tar包。
[root@192 Downloads]# wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
下载完成之后进行解压:
[root@192 Downloads]# tar -xzvf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
说明:-xzvf命令是解压tar.gz包的命令。
解压后可以先将mysql文件夹过长的名字重命名,一般命名为mysql。然后将其移动到/usr/local/文件夹下:
[root@192 Downloads]# mv mysql /usr/local/mysql
然后创建用户组mysql
[root@192 local]# groupadd mysql
创建系统用户,-r参数表示mysql是系统用户,不能用来登录系统,创建用户mysql并将其添加到用户组mysql中
[root@192 local]# useradd -r -g mysql mysql
[root@192 local]# chown -R mysql mysql/
[root@192 local]# chgrp -R mysql mysql/
接下来手动创建一个mysql的配置文件my.cnf。
[root@192 local]# vim /etc/my.cnf
配置文件中的重要属性如下:
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
character_set_server=utf8
init_connect='SET NAMES utf8'
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
#不区分大小写
lower_case_table_names = 1
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
max_connections=5000
default-time_zone = '+8:00‘
编辑完成后使用:wq!命令保存文件并退出。然后赋予其最高权限:
chmod 777 my.cnf
然后手动编辑mysql日志文件:
[root@192 local]# cd /var/log/
[root@192 log]# vim mysqld.log
:wq!
给日志文件赋予权限并加到用户组中
[root@192 log]# chmod 777 mysqld.log
[root@192 log]# chown mysql:mysql mysqld.log
然后是初始化和安装数据库,执行完之后注意看最后一点root@localhost:后面的就是MySQL的初始密码
[root@192 mysql]# bin/mysqld --initialize=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --lc_messages_dir=/usr/local/mysql/share --lc_messages=en_US
如果忘记初始化的随机密码,可以在mysql/bin目录下使用./mysqld_safe --skip-grant-tables &命令来以不检查权限的方式启动,即无需密码登录。
登录之后可以修改自己的密码(5.7及以上的版本写法):
update user set authentication_string=password('your password') where user='root';
然后开启mysql远程访问权限:
update user set host='%' where user='root';
最后设置mysql开机启动:
[root@192 mysql]# cp -a /support-files/mysql.server /etc/init.d/mysqld
[root@192 init.d]# chkconfig --add mysqld