1、到 https://dev.mysql.com/downloads/mysql/ 网站上下载 mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz 二进制安装包
2、查看系统已安装的组件
yum grouplist
3、安装依赖
yum groupinstall Development Tools -y
4、解压缩mysql(在做这步之前需要先下载mysql/mariadb/percona等mysql相关的数据库,这里使用mysql 5.7二制制包)
tar zxf /usr/local/src/mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz -C /usr/local/src/
mv /usr/local/src/mysql-5.7.30-linux-glibc2.12-x86_64 /usr/local/mysql
5、创建运行mysql的用户
useradd -u 5050 -s /sbin/nologin -M mysql
6、设置权限(/usr/local/mysql/)这个目录是刚才解压的“目的目录”第4步的/usr/local
chown -R mysql.mysql /usr/local/mysql/
7、运行安装脚本,检测libaio,切换目录到解压后的mysql目录
rpm -qa|grep libaio
cd /usr/local/mysql
建立数据存储目录/data/mysqldata目录
mkdir -p /data/mysqldata
设置数据存储目录的用户权限为mysql
chown -R mysql.mysql /data/mysqldata/
初始化数据库。(这个地方和老版本的mysql初始化数据库不相同)
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysqldata
没有任何意外的话,能安装成功,会产生一大堆初始化日志和安装成功的提示,会给mysql的root@localhost用户设置1个监时生成的随机密码 ;会在/data/mysqldata/目录下产生日志文件和数据目录
8、建立启动脚本并设置启动
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
chkconfig --add /etc/init.d/mysqld
chkconfig --level 3 mysqld on
9、设置命令路径
echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile
10、设置/etc/my.cnf配置文件:注意skip-grant-tables 是为了让用户可以直接无密码登录mysql实例
cat /etc/my.cnf
[mysqld]
datadir=/data/mysqldata
socket=/tmp/mysql.sock
symbolic-links=0
skip_name_resolve=on
skip-grant-tables
[mysqld_safe]
log-error=/data/mysqldata/mysql-err.log
pid-file=/data/mysqldata/mysql.pid
11、启动mysql服务 2种方式的示例 ; 特别注意,在启动mysql前,需要设置my.cnf文件。最简单的my.cnf示例如下
/etc/init.d/mysqld start
/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --user=mysql &
12、关闭的示例(最好不要用kill -9 会造成数据丢失)
/etc/init.d/mysqld stop
特别注意,直接用上面的第10步命令启脚服务会首先读取/etc/my.cnf文件,这里面有设置默认的数据目录和日志目录,需要修改为自己设置的目标目录,不然系统mysql无法启动,
特别注意,mysql.sock文件位置非常重要,如果使用rpm yum 方式安装,mysql命令默认读取这个文件位置是/var/lib/mysql/mysql.sock,用二进制安装,默认读取/tmp/mysql.sock
特别注意,目录权限非常重要
二、数据库操作示例
1、和老版本的mysql数据库不同,mysql5.7之后的版本,在初始化mysql数据库的时候,会给mysql的root@localhost用户设置1个监时生成的随机密码。最好是修改掉这个随机密码方便操作;
方法1: 使用mysql -e 直接修改密码 ;设置password_expired列为NO,使密码不过期
mysql -e ‘update mysql.user set authentication_string = password("123456") where user = "root";‘
mysql -e ‘update mysql.user set password_expired="N" where user="root";‘
方法2: 先登录mysql数据库,然后输入下面的命令;设置password_expired列为NO,使密码不过期
update mysql.user set authentication_string = password("123456") where user = "root";
update mysql.user set password_expired="N" where user="root";
2、退出mysql命令终端,修改my.cnf文件,取消skip-grant-tables 选项,重启mysql数据库,使用下面命令登录mysql数据库,需要输入修改后的密码。
mysql -uroot -p
3、创建新的管理员用户root@%,这个root可以通过远程设备登录,并且这个用户可以创建新的用户的操作如下:
create user ‘root‘@‘%‘ identified by ‘123456‘;
grant all privileges on . to ‘root‘@‘%‘ identified by ‘123456‘;
update mysql.user set Grant_priv=‘Y‘ where user=‘root‘ and Host=‘%‘;
drop user ‘root‘@‘localhost‘;
flush privileges;