环境准备
yum install gcc-c++
yum install -y libaio
下载安装包
官网https://dev.mysql.com/downloads/mysql/5.7.html#downloads,下载mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz
解压
上传到服务器/user/local/下,解压:
tar zxf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz
清理
清理原有的mysql/MariaDB数据库,检查库文件是否有删除,若有便删除(linux系统自带的):
rpm -qa | grep mysql/mariadb
删除
删除自带的mysql:rpm -e --nodeps mysql-libs-5.1.73-5.el6_6.x86_64 删除自带的mariadb:rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
创建用户
检查mysql组和用户是否存在,如无创建:
cat /etc/group | grep mysql
cat /etc/passwd |grep mysql
创建:
groupadd mysql
useradd -r -g mysql mysql(useradd -r参数表示mysql用户是系统用户,不可用于登录系统)
在mysql下添加data目录
mkdir data
更改mysql目录下所有的目录及文件夹所属组合用户
[root@dbserver mysql]# cd /usr/local/
[root@dbserver local]# chown -R mysql mysql-5.7.22/
[root@dbserver local]# chgrp -R mysql mysql-5.7.22/
[root@dbserver local]# cd mysql-5.7.22/
[root@dbserver mysql]# ls -l
安装和初始化数据库
cd bin
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql-5.7.22/ --datadir=/usr/local/mysql-5.7.22/data/ --lc_messages_dir=/usr/local/mysql-5.7.22/share --lc_messages=en_US --port=3306
配置my.cnf
接下来进入/usr/local/mysql-5.7.22/support-files/目录下
查看是否存在my-default.cnf文件,如果存在直接copy到/etc/my.cnf文件中
cp -a ./support-files/my-default.cnf /etc/my.cnf
如果不存在my-default.cnf文件,则在/etc/目录下创建my.cnf,并写入以下内容:
#[mysqld]
server-id= 1
# 设置3308端口
port=3306
# 设置mysql的安装目录
basedir=/usr/local/mysql-5.7.22/
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql-5.7.22/data/
log_bin = off
# 允许最大连接数
max_connections = 1024
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为utf8mb4
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
启动服务
[root@dbserver mysql]# cd bin/
[root@dbserver bin]# ./mysqld_safe --user=mysql &
[2] 10436
[root@dbserver bin]# Logging to '/var/log/mysql/mysql.log'.
2017-08-31T09:52:15.806633Z mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
2017-08-31T09:52:16.292949Z mysqld_safe mysqld from pid file /var/run/mysql/mysql.pid ended
将mysqld服务加入开机自启动项
将{mysql}/ support-files/mysql.server 拷贝为/etc/init.d/mysql并设置运行权限,这样就可以使用service mysql命令启动/停止服务,
否则就只能使用{mysql}/bin/mysqld_safe &命令来启动服务
还需要把mysql.server中basedir和datadir相关路径,改为自定义的路径,默认路径是/usr/local/mysql\
basedir=/usr/local/mysql-5.7.22/
datadir=/usr/local/mysql-5.7.22/data/
[root@dbserver support-files]# cp mysql.server /etc/init.d/mysqld
[root@dbserver support-files]# chmod +x /etc/init.d/mysqld
-- 把mysql注册为开机启动的服务
[root@dbserver support-files]# chkconfig --add mysqld
-- 查看是否添加成功
[root@dbserver support-files]# chkconfig --list 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]'.
mysql 0:off 1:off 2:on 3:on 4:on 5:on 6:off
启动服务
[root@dbserver bin]# service mysqld start
Starting MySQL. SUCCESS!
登录mysql,修改密码和权限
[root@dbserver bin]# ./mysql -u root -p
密码是第八步产生的密码
设置密码:
set password=password("root");
ALTER USER "root"@"%" IDENTIFIED BY "你的新密码";
mysql8,修改加密方式:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'huzhiguo0921';
查看系统用户表:
use mysql;
select host,user,authentication_string,plugin from user;
授权 root 用户的所有权限并设置远程访问:
GRANT ALL ON *.* TO 'root'@'%';
或者直接更新user表:
update user set host='%' where user="root";
刷新权限:
flush privileges;
设置远程登录权限
mysql> grant all privileges on *.* to'root' @'%' identified by 'root';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.06 sec)
mysql> quit
Bye
最后
然后检查3306端口是否开放:
netstat -nupl|grep 3306
开放3306端口:
firewall -cmd --permanent --add-prot=3306/tcp
重启防火墙:
firewall -cmd --reload
导出数据库所有库:
mysqldump -uroot -p123456 --all-databases > D:\all.sql
修改mysql编码utf8mb4
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'