好久都没有搞过MySQL了,最近去官网一看发现好多东西都变了,之前收藏的博客也不管用了,这次自己写一篇记录下。
1、下载MySQL
可以从官网直接下载压缩包MySQL官网下载连接
选择与自己服务器对应的版本。下载完成后上传到服务器 /usr/local/mysql 文件夹下(没有就创建一个或者放在其他文件夹下)
也可以用wget直接下载
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz
注意:看下载到了哪个文件夹下
下载后移动到 /usr/local/mysql 文件夹下。(确认先创建mysq文件夹,否则文件会被重命名)
mv mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz /usr/local/mysql
进入 /usr/local/mysql 文件夹下,解压压缩文件
tar -xvf mysql-8.0.21-linux-glibc2.17-x86_64-minimal.tar.xz
重命名
mv mysql-8.0.21-linux-glibc2.12-x86_64 mysql8.0
创建文件夹 data 储存数据
cd mysql8.0
mkdir .data
2、安装MySQL
(1)创建 mysql 用户组和 mysql 用户
groupadd mysql
useradd -g mysql mysql
(2)改变 mysql 目录权限(授权)
chown -R mysql.mysql /usr/local/mysql/
或
chown -R mysql .
chgrp -R mysql .
(3)重点来了!
初始化数据库
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
如果失败可以试试先安装数据库(有的没有这一步,直接初始化数据库可能会报错:./bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory)
yum install -y libaio 或 yum install -y libaio.so.1
成功后获得如下图所示初始密码
(4)修改my.cnf文件
vim /etc/my.cnf
进入编辑模式后写入
[mysqld]
basedir = /usr/local/mysql/mysql8.0
datadir = /usr/local/mysql/mysql8.0/data
socket = /usr/local/mysql/mysql8.0/mysql.sock
character-set-server=utf8
port = 3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[client]
socket = /usr/local/mysql/mysql8.0/mysql.sock
default-character-set=utf8
:wq退出
建立Mysql服务
cp -a ./support-files/mysql.server /etc/init.d/mysql
添加Mysql到系统服务
chmod +x /etc/init.d/mysql
chkconfig --add mysql
# 检查服务是否生效
chkconfig --list mysql
3、启动MySQL服务
service mysql start
登录MySQL(密码注意大小写)
mysql -uroot -p密码
修改密码:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
刷新权限
FLUSH PRIVILEGES;
远程连接的话记得开放3306端口和防火墙。
检查3306端口是否开放
netstat -nupl|grep 3306
开放3306端口
firewall -cmd --permanent --add-prot=3306/tcp
重启防火墙
firewall -cmd --reload
同时远程连接时应该再创建一条root记录,而不是直接修改root。不然可能会导致无法登录,本人就曾经踩过这个坑。
具体代码如下:
授权 root 用户的所有权限并设置远程访问
CREATE USER 'root'@'%' IDENTIFIED BY '111111';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '111111';(修改加密规则并更新密码)
设置为远程登录
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION ;
GRANT ALL ON 表示所有权限,% 表示通配所有 host,可以访问远程。
flush privileges;(刷新权限)