安装MySQL 5.7
1、通过命令下载
wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz
2、解压
tar -zxvf mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz -C /usr/local/mysql/
3、简化
cd /usr/local
mv mysql-5.7.36-linux-glibc2.12-x86_64 mysql
4、创建数据目录并赋权
mkdir mysql/data
chmod -R 777 /usr/local/mysql/data
5、创建用户、组并加入
groupadd mysql
useradd -g mysql mysql
6、新建MySQL配置文件
vim /etc/my.cnf
7、加入如下配置
[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
log-error=/usr/local/mysql/data/mysql.err
pid-file=/usr/local/mysql/data/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true
8、进入bin目录初始化
cd /usr/local/mysql/bin
./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data/ --basedir=/usr/local/mysql/
- 可能会报错:./mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory ,是因为没有安装依赖 libaio,运行如下命令安装依赖
-
yum -y install libaio-devel.x86_64 yum -y install numactl
9、查看MySQL密码
cat /usr/local/mysql/data/mysql.err
10、添加软连接
ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
11、启动MySQL
service mysql start
12、登录mysql
./mysql -h localhost -u root -p
13、修改密码
set password=password('rootxjhy');
flush privileges;
14、修改访问权限
use mysql;
update user set Host='%' where User='root';
flush privileges;
15、远程Navicat连接
- 可能报错:2003 - Can't connect to MySQL server on 'xxx' (10060 "Unknown error")
- 服务器端口可能未开放,开放端口
firewall-cmd --query-port=3306/tcp
- 返回no说明未开放,开放3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
- 重启防火墙生效配置
firewall-cmd --reload
- 查看验证,返回yes端口开放成功
firewall-cmd --query-port=3306/tcp
- 若服务器端口开放了还不能连接访问,则是服务器厂商对应的安全组限制了
腾讯云服务器端口怎么开放?端口开通教程
腾讯云服务器端口怎么开放?端口开通教程 - 腾讯云开发者社区-腾讯云
阿里云添加安全组规则
添加安全组规则_云服务器 ECS-阿里云帮助中心
安装完成
创建用户及用户权限配置
1、创建一个MySQL用户
CREATE USER 'xjhy'@'%' IDENTIFIED BY 'xjhy';
2、查看创建的MySQL用户
SELECT host,user FROM mysql.user WHERE user='xjhy';
3、给创建成功的MySQL用户赋权
以下是一些MySQL用户常用的权限:
ALL: 所有可用的权限
CREATE: 创建库、表和索引
LOCK_TABLES: 锁定表
ALTER: 修改表
DELETE: 删除表
INSERT: 插入表或列
SELECT: 检索表或列的数据
CREATE_VIEW: 创建视图
SHOW_DATABASES: 列出数据库
DROP: 删除库、表和视图
一般都是给到业务数据库权限,不要给删除库、表和视图的权限,核心库mysql数据库的权限也不要给,根据自己的需求来。root用户赋予所有权限使用如下命令:
GRANT ALL PRIVILEGES ON *.* TO ‘root’@’%’ WITH GRANT OPTION;
flush privileges;
我只给了业务库(zhy)除删除库、表和视图的其它权限,核心库(information_schema、performance_schema、mysql)的查看权限。
GRANT PROCESS *.* TO 'xjhy'@'%';
GRANT SELECT ON `information_schema`.* TO 'xjhy'@'%';
GRANT SELECT ON `performance_schema`.* TO 'xjhy'@'%';
GRANT SELECT ON `mysql`.* TO 'xjhy'@'%';
GRANT CREATE,ALTER,INSERT,SELECT,DELETE,UPDATE,INDEX ON `zhy`.* TO 'xjhy'@'%';
flush privileges;
使用远程连接Navicat工具等可能会报错:1227 - Access denied; you need (at least one of) the PROCESs privilege(s) for this operation
这是因为PROCESS权限是用来查看谁连接数据的一个权限,除了root用户,都只能看到自己的。使用如下命令赋权解决
GRANT PROCESS *.* TO 'xjhy'@'%';
flush privileges;