1 下载数据库压缩文件:
下载地址:
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz
2,进入mysql目录,由于5.7没有data目录,自己创建一个
3,创建mysql用户和用户组
groupadd mysql
useradd -r -s /sbin/nologin -g mysql mysql -d /opt/mysql-5.7-22/mysql-5.7.22-linux-glibc2.12-x86_64
#useradd -r参数表示mysql用户是系统用户,不可用于登录系统
3,改变mysql目录权限,之前是root权限,现在设置成mysql权限
chown -R mysql:mysql /opt/mysql-5.7-22/mysql-5.7.22-linux-glibc2.12-x86_64
4, 初始化数据库
./bin/mysql_install_db --user=mysql --basedir=/opt/mysql-5.7-22/mysql-5.7.22-linux-glibc2.12-x86_64/ --datadir=/opt/mysql-5.7-22/mysql-5.7.22-linux-glibc2.12-x86_64/data/
5,把mysql放到本地系统服务中
cp -a ./support-files/mysql.server /etc/init.d/mysqld
6,由于mysql内没有my-default.cnf 文件,直接编辑的 /etc/my.cnf文件(也可上传my-default.cnf )
[mysqld]
basedir=/opt/mysql-5.7-22/mysql-5.7.22-linux-glibc2.12-x86_64
datadir=/opt/mysql-5.7-22/mysql-5.7.22-linux-glibc2.12-x86_64/data
socket=/tmp/mysql.sock
user=mysql
port=3306
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
symbolic-links=0
max_connections=200
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=32M
explicit_defaults_for_timestamp=true
[mysqld_safe]
log-error=/var/log/mysql/mysql.log
pid-file=/var/run/mysql/mysql.pid
修改后
注意:mysql连接localhost通常通过一个Unix域套接字文件进行,一般是/tmp/mysql.sock,这个socket路径不要修改,不然连本地mysql的时候回报错:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'
因为my.cnf中配置了log-error、pid-file路径,因此需要在/var/log/、/var/run/创建mysql目录,并且给mysql用户全部的权限(chmod)
cd /var/log
mkdir mysql
cd /opt/mysql-5.7-22/mysql-5.7.22-linux-glibc2.12-x86_64
mkdir log run
chmod -R 777 /var/log/mariadb/
chmod -R 777 /var/log/mariadb/
chmod -R 777 /opt/mysql-5.7-22/mysql-5.7.22-linux-glibc2.12-x86_64/log/
chmod -R 777 /opt/mysql-5.7-22/mysql-5.7.22-linux-glibc2.12-x86_64/run/
否则启动会报错,如下图
创建log,存mysql的日志文件
7,启动mysql服务
service mysqld start
查看初始密码,尝试登陆mysql
cat /root/.mysql_secret
bin/mysql -u root -p
登陆成功,修改密码
SET PASSWORD FOR 'root'@localhost=PASSWORD('123456'); -最好改成复杂的密码,又特殊字符和符号的
flush privileges;
8,配置mysql环境变量,修改/etc/profile文件,在最下方添加配置9,
vi /etc/profile
增加如下配置:
export PATH=$PATH:/opt/mysql-5.7-22/mysql-5.7.22-linux-glibc2.12-x86_64/bin
立即生效
source /etc/profile
9,暴露3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent # 开放3306端口
firewall-cmd --zone=public --remove-port=3306/tcp --permanent #关闭3306端口
firewall-cmd --reload # 配置立即生效
最后云服务器上的Sys-WebServer云服务器端口也暴露下,不然外网无法访问
10,用navicat连接发现外网无法连接
修改/etc/my.cnf
找到bind-address =127.0.0.1
修改为bind-address =0.0.0.0
再重启 mysql:
service mysqld restart
在这种情况下如果再尝试远程连接,则会报出ERROR 1130 (HY000): Host '211.87.***.***'is not allowed to connect to this MySQL server提示信息,不能远程连接数据库。
就需要如下操作:
bin/mysql -u root -p 连接mysql,输入密码
use mysql; 切换到mysql数据库
update user set host = '%' where user = 'root'; 设置root账户外网都能访问
flush privileges; 刷新权限
exit; 退出mysql客户端
就ok了:
修改密码:update
user
set
authentication_string=
password
(
'123456'
)
where
user
=
'root';
flush
privileges
;