系统环境:Centos7
MySQL官网下载地址:mysql-8.0.22-linux-glibc2.12-x86_64.tar.xz
注: mysql官网提供了不同版本的linux,这里下载的是 Linux - Generic(社区通用版)
一. 准备工作
(1) 从官网下载安装包
(2) 将压缩包复制到Linux的 /usr/local文件夹中
(3) 解压:tar xvf /usr/local/mysql-8.0.22-linux-glibc2.12-x86_64.tar.xz
(4) 重命名:mv mysql-8.0.22-linux-glibc2.12-x86_64 mysql
(5) 创建data文件夹:mkdir -p /data/mysql/data /data/mysql/logs /data/mysql/tmp
(6) data授权:chown -R mysql.mysql /data/mysql
二. 创建 /etc/my.cnf 配置文件
(1) vi /etc/my.cnf
(2) 复制以下内容进去:
[mysql]
########### CLIENT ###########
socket= /data/mysql/tmp/mysql.sock
[mysqld]
########### GENERAL ###########
port = 3306
user = mysql
default_storage_engine = InnoDB
lower_case_table_names = 1
log_bin_trust_function_creators = 1
tmpdir = /data/mysql/tmp
socket = /data/mysql/tmp/mysql.sock
group_concat_max_len = 1024000
character_set_server = utf8mb4
########### MyISAM ###########
key_buffer_size = 32M
########### SAFETY ###########
max_allowed_packet = 32M
max_connect_errors = 1000000
skip_name_resolve = 1
sysdate_is_now = 1
innodb = FORCE
########### DATA STORAGE ###########
datadir = /data/mysql/data
########### BINARY LOGGING ###########
server_id = 1003306
log_bin = /data/mysql/logs/mysql-bin
log_bin_index = mysql-bin.index
binlog_format = ROW
expire_logs_days = 15
sync_binlog = 1
log_timestamps = SYSTEM
default_time_zone = '+8:00'
log_bin_trust_function_creators = 1
gtid_mode = ON
enforce_gtid_consistency = ON
########### CACHES AND LIMITS ###########
binlog_cache_size = 2M
sort_buffer_size = 2M
read_buffer_size = 4M
join_buffer_size = 4M
tmp_table_size = 32M
max_heap_table_size = 32M
max_length_for_sort_data = 8096
max_connections = 2048
thread_cache_size = 50
open_files_limit = 65535
table_definition_cache = 4096
table_open_cache = 4096
########### INNODB ###########
innodb_data_home_dir = /data/mysql/data
innodb_log_group_home_dir = /data/mysql/logs
innodb_log_files_in_group = 2
innodb_log_file_size = 512M
innodb_flush_log_at_trx_commit = 1
innodb_file_per_table = 1
innodb_buffer_pool_size = 1G
########### LOGGING ###########
log_error = /data/mysql/logs/mysql-error.log
slow_query_log = 1
long_query_time = 3
slow_query_log_file = /data/mysql/logs/slow.log
# for mysql-5.7
# sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_VALUE_ON_ZERO,NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER
# query_cache_type = 0
# query_cache_size = 0
# for mysql-8.0
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_VALUE_ON_ZERO,NO_ENGINE_SUBSTITUTION
basedir = /usr/local/mysql
skip_ssl
default_authentication_plugin=mysql_native_password
[mysqld_safe]
malloc_lib = /usr/lib64/libjemalloc.so
pid_file = /data/mysql/tmp/mysqld.pid
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
!include /root/.my.cnf
三. 创建mysql用户, 进行授权
1. 创建mysql用户,用户组(将mysql用户放进用户组内)
(1) groupadd mysql
(2) useradd -g mysql mysql
2. 授权
(1) chown -R mysql.mysql /usr/local/mysql
(2) chmod 755 /usr/local/mysql
(3) chmod 644 /etc/my.cnf
四. 生成mysql基础数据
(1) cd /usr/local/mysql/bin
(2) 生成mysql数据库基础数据:
./mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data --lower_case_table_names=1 --initialize
文字说明:
--user=mysql : 指定运行mysqld进程的用户名。可更改,主要为了后续添加多个mysql管理员时方便
--basedir=/usr/local/mysql: 安装目录
--datadir=/usr/local/mysql/mysql-files: 数据存放目录
--lower_case_table_names=1: 不区分大小写(这个根据自己需求来,可以先搜索看看)
注:
1.该命令运行后, 会产生一个临时登录密码, 在 /data/mysql/logs/mysql-error.log 的最后一行(可搜索看看)
2.执行命令可能会报错: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory
3.解决办法(可选) | 下面两个我自己在执行完第一个命令之后就可以了:
(1)安装numactl. 执行命令: yum -y install numactl
(2)安装libaio. 执行命令: yum install -y libaio
4.安装完成后, 再次执行上面的 "生成mysql数据库基础数据" 命令即可
5.命令执行后, 记得将最后一行的临时登录密码记录下来, 后续会被使用到
五. 添加mysql服务到系统,并设置开机自启动
(1) 复制mysql安装目录下的mysql.server : cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
(2) 赋予权限:chmod +x /etc/init.d/mysqld
(3) 添加服务: chkconfig --add mysqld
(4) 查看服务列表: chkconfig --list
看到mysqld行数据 - 3,4,5都为"开"或"on"表示成功
六. mysql启动: service mysql start
mysql状态查看: service mysql status
七. mysql登录
(1) mysql -uroot -p
(2) 需要输入的密码是 第四步中运行生成基础数据后, 产生的临时登录密码
八. 修改密码
(1) ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'xxxx'; (xxxx - 这里需要自己设置密码)
(2) flush privileges; (刷新使密码生效)
九. 添加管理员用户,并授权
(1) create user admin; (用户名自定义)
(2) ALTER USER 'admin'@'%' IDENTIFIED WITH mysql_native_password BY 'xxxx'; (xxxx - 这里需要设置密码)
(3) grant select,insert,update,delete on app.* to 'admin'@'%'; (授权app数据库增删改查权限给admin用户)
(4) flush privileges;
十. 允许管理员远程连接
(1) use mysql;
(2) update user set host='%' where user='admin';
(3) flush privileges;
权限相关语句
(1) 授权用户所有权限:grant all on *.* to 'admin'@'%';
(2) 回收用户所有权限:revoke all privileges,grant option from 'admin'@'%';
(3) 刷新使权限生效:flush privileges;常用权限介绍:
select,可以从数据库中的表中查询数据
insert,可以插入数据到数据库的表中
update,可以对数据库中的表进行更新数据
delete,可以从数据库中的表中删除数据
alter,可以使用 alter table 来改变表的结构
create,可以创建新的数据库或表的语句
drop,能够删除现有数据库,表和视图
grant option,可以向其它用户授予或移除权限
index,可以创建和删除索引
all或all privileges,代表指定权限等级的所有权限作用域:
*.* ----> 代表所有数据库的权限
app.* ----> app 数据库下所有表
app.t1 ----> app 数据库下 t1 表