开发不易,希望各位同仁少踩坑,故在此指出安装mysql-5.7各种坑,同时附上解决方案.
1.下载
mysql各版本下载地址: http://ftp.ntu.edu.tw/MySQL/Downloads/
我这里选择mysql-5.7.21,通用版,linux下64位。
2.解压
将安装包放到 /usr/local 目录下,解压
tar -zxvf mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz
修改解压目录名称为mysql
3.添加用户组和用户
添加用户组
[root@iz8vb5o19rg1twsj651szwz local]# groupadd mysql
添加用户mysql 到用户组mysql
[root@iz8vb5o19rg1twsj651szwz local]# useradd -g mysql mysql
4.安装
设置权限
[root@iz8vb5o19rg1twsj651szwz local]# chown -R mysql .
[root@iz8vb5o19rg1twsj651szwz local]# chgrp -R mysql .
[root@iz8vb5o19rg1twsj651szwz local]# yum install libaio
执行安装脚本并初始化:
[root@iz8vb5o19rg1twsj651szwz local]# cd mysql
[root@iz8vb5o19rg1twsj651szwz mysql]# ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
//注释
./bin/mysqld --initialize --user=mysql --basedir=你安装的mysql文件夹所在路径 --datadir=数据目录路径bai
运行该命令后可能出现报错如下:
error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
解决:
出现该问题首先检查该链接库文件有没有安装使用 命令进行核查
rpm -qa|grep libaio
运行该命令后发现系统中无该链接库文件,则进行安装
yum install libaio-devel.x86_64
安装成功后,继续运行数据库的初始化命令,提示成功。
注意:初始化最后的默认密码需要记住
成功后接着执行下面命令:
[root@iz8vb5o19rg1twsj651szwz mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@iz8vb5o19rg1twsj651szwz mysql]# chmod 755 /etc/init.d/mysqld
注意:5.6之前的版本是此操作
[root@iz8vb5o19rg1twsj651szwz mysql]# cp support-files/my-medium.cnf /etc/my.cnf
5.6之后的版本执行以下操作
[root@iz8vb5o19rg1twsj651szwz mysql]# cp support-files/my-default.cnf /etc/my.cnf
修改启动脚本
[root@iz8vb5o19rg1twsj651szwz mysql]# vi /etc/init.d/mysqld
修改项:
basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data/mysql
启动服务
[root@iz8vb5o19rg1twsj651szwz mysql]# service mysqld start
启动服务可能报错:
解决
启动失败注意检查数据目录的权限,要与mysql程序运行用户权限一致,执行以下命令解决
[root@db01 mysql]# chown -R mysql.mysql ../mysql
若还报错请参考:https://blog.csdn.net/eagle89/article/details/79813405
5.启动成功后登录测试
接着再进行以下操作
[root@iz8vb5o19rg1twsj651szwz ~]# yum install ncurses ncurses-devel
[root@iz8vb5o19rg1twsj651szwz ~]# yum install libncurses.so.5
[root@iz8vb5o19rg1twsj651szwz ~]# /usr/local/mysql/bin/mysql -V
登录测试,输入默认密码即可登录成功
[root@iz8vb5o19rg1twsj651szwz ~]# /usr/local/mysql/bin/mysql -uroot -p
6.重置用户密码
用密码登录后,必须马上修改新的密码,不然使用数据库会报如下错误:
mysql> use mysql;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
修改密码
mysql> alter user 'root'@'localhost' identified by '123456';
可能修改密码报错
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
解决
这个其实与validate_password_policy的值有关。validate_password_policy有以下取值:
默认是1,即MEDIUM,所以刚开始设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。
有时候,只是为了自己测试,不想密码设置得那么复杂,譬如说,我只想设置root的密码为123456。
必须修改两个全局参数:首先,修改validate_password_policy参数的值
mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)
validate_password_length(密码长度)参数默认为8,我们修改为1
mysql> set global validate_password_length=1;
Query OK, 0 rows affected (0.00 sec)
完成之后再次执行修改密码语句即可成功
mysql> alter user 'root'@'localhost' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
查看用户表密码是否已更改
mysql> select user,host,password from mysql.user;
mysql> exit;
7.使用新密码登录
登录命令:mysql -uroot -p
解决:安装mysql命令行
yum install mysql
然后再次登录成功
若登录出现异常:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '***' (2)
解决请参考:http://aiezu.com/article/45.html
8.开启mysql的远程访问权限
mysql> use mysql;
注释:root代表用户,123456是密码
mysql> GRANT ALL PRIVILEGES ON . TO root@"%" IDENTIFIED BY "123456";
mysql> flush privileges;
因为阿里云服务器自带防火墙,所以还要在阿里云服务器开发3306端口
至此完成安装完成!!
相关命令:
重启mysql
service mysqld restart
启动mysql
service mysqld start
关闭mysql
service mysqld stop
查看运行状态
service mysqld status
另附mysql配置文件
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
skip-name-resolve
#设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M
[mysqld_safe]
log=/usr/local/mysql/log/mysql.log
long_query_time=2
log-slow-queries= /usr/local/mysql/log/slowquery.log
log_error=/usr/local/mysql/log/mysql.log
pid-file=/usr/local/mysql/log/mysql.pid