centos7下安装mysql5.7系列
1. mysql安装
环境VMware14.
Centos7.6版
1.2下载mysql二进制包
可在命令行直接使用weget下载。
二进制包安装方式比较简单,一般我们使用GA版本社区版,即所谓的生产环境版,是经过测试,修复后的版本。
网址如下https://dev.mysql.com/downloads/mysql/


1.3安装过程
注意:有些linux系统自带maridb数据库请先卸载。
创建好mysql用户和组。并将下载好的mysql包放在/usr/local/目录下
[root@CHENYUEXIN ~]# groupadd mysql
[root@CHENYUEXIN ~]# useradd -g mysql mysql -s /sbin/nologin
[root@CHENYUEXIN ~]# echo $?
0
[root@CHENYUEXIN ~]# cd /usr/local/

解压gz包

对解压后的文件做软连接,就是为了好看。也方便。

创建mysql目录

把以下配置保存,mysql5.7可能没有配置模板,需要自行配置。
vi /etc/my.cnf
[client]
port=3306
socket=/tmp/mysql.sock
[mysql]
prompt="\u@db \R:\m:\s [\d]>"
no-auto-rehash
[mysqld]
user=mysql
port=3306
basedir=/usr/local/mysql
datadir=/data/mysql/
socket=/tmp/mysql.sock
character-set-server=utf8mb4
skip_name_resolve=1
open_files_limit=65535
back_log=1024
max_connections=512
max_connect_errors=1000000
table_open_cache=1024
table_definition_cache=1024
table_open_cache_instances=64
thread_stack=512K
external-locking=FALSE
max_allowed_packet=32M
sort_buffer_size=4M
join_buffer_size=4M
thread_cache_size=768
query_cache_size=0
query_cache_type=0
interactive_timeout=600
wait_timeout=600
tmp_table_size=32M
max_heap_table_size=32M
slow_query_log=1
slow_query_log_file=/data/mysql/error.log
log-error=/data/mysql/error.log
long_query_time=0.5
server-id=3306100
log-bin=/data/mysql/mysql-binlog
sync_binlog=1
binlog_cache_size=4M
max_binlog_cache_size=1G
max_binlog_size=1G
expire_logs_days=7
master_info_repository=TABLE
relay_log_info_repository=TABLE
gtid_mode=on
enforce_gtid_consistency=1
log_slave_updates
binlog_format=row
relay_log_recovery=1
relay-log-purge=1
key_buffer_size=32M
read_buffer_size=8M
read_rnd_buffer_size=4M
bulk_insert_buffer_size=64M
lock_wait_timeout=3600
explicit_defaults_for_timestamp=1
innodb_thread_concurrency=0
innodb_sync_spin_loops=100
innodb_spin_wait_delay=30
transaction_isolation=REPEATABLE-READ
innodb_buffer_pool_size=1024M
innodb_buffer_pool_instances=8
innodb_buffer_pool_load_at_startup=1
innodb_buffer_pool_dump_at_shutdown=1
innodb_data_file_path=ibdata1:1G:autoextend
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=32M
innodb_log_file_size=2G
innodb_log_files_in_group=2
innodb_io_capacity=2000
innodb_io_capacity_max=4000
innodb_flush_neighbors=0
innodb_write_io_threads=8
innodb_read_io_threads=8
innodb_purge_threads=4
innodb_page_cleaners=4
innodb_open_files=65535
innodb_max_dirty_pages_pct=50
innodb_flush_method=O_DIRECT
innodb_lru_scan_depth=4000
innodb_checksum_algorithm=crc32
innodb_lock_wait_timeout=10
innodb_rollback_on_timeout=1
innodb_print_all_deadlocks=1
innodb_file_per_table=1
innodb_online_alter_log_max_size=4G
internal_tmp_disk_storage_engine=InnoDB
innodb_stats_on_metadata=0
innodb_status_file=1
innodb_status_output=0
innodb_status_output_locks=0
performance_schema=1
performance_schema_instrument='%=on'
innodb_monitor_enable="module_innodb"
innodb_monitor_enable="module_server"
innodb_monitor_enable="module_dml"
innodb_monitor_enable="module_ddl"
innodb_monitor_enable="module_trx"
innodb_monitor_enable="module_os"
innodb_monitor_enable="module_purge"
innodb_monitor_enable="module_log"
innodb_monitor_enable="module_lock"
innodb_monitor_enable="module_buffer"
innodb_monitor_enable="module_index"
innodb_monitor_enable="module_ibuf_system"
innodb_monitor_enable="module_buffer_page"
innodb_monitor_enable="module_adaptive_hash"
[mysqldump]
quick
max_allowed_packet=32M
把相关目录的用户和组属性划到mysql下

进入到 /usr/local/mysql/bin/下进行最后一步的也就是初始化了命令如下
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/data/mysql/ --user=mysql --initialize
在此过程中如果出现报错,要去查看/data/mysql/error.log的错误日志查看,不要局限于这个日志,如果是与系统相关,可能需要查看,上面的初始化参数--initialize表示生成一个初始化密码,会记录在log-error里面。如果是--initialize-insecure表示无密码,可随意登录。
启动成功后执行
cat /data/mysql/error.log |grep passwd
如下图显示红框内为初始化密码。

到这里,还需要配置全局变量,这样才能使用mysql命令登录数据库
编辑
vim ~/.bash_profile ,将mysql的bin目录加入到PATH后面即可
然后source ~/.bash_profile

此时就可以使用mysql在任意目录登录了

2.mysql密码丢失问题
如果忘记密码可以通过添加--skip-grant-tables参数来解决,如下操作

此时直接执行mysql无密码登录
然后根据前面的方式增加密码授权。
然受停止数据库,再次使用./mysqld_safe --defaults-file=/etc/my.cnf & 启动即可
如下图可以看到使用mysql命令是无法登录了,再次使用密码登录即可。

3启动与停止mysql
这个只需要将support-files/mysql.server复制到/etc/init.d目录下,并改名为mysqld,如下图所示


启动则执行 /etc/init.d/mysqld start,停止则执行/etc/init.d/mysqld stop
3.2 mysql的连接方式
windows端常用的连接工具有sqlyog,navicat。
一般说的是在linux下连接mysql,第一种为TCP/IP方式,另外就是socket方式。
一般使用TCP/IP,常见的模板如:
mysql -u username -p password -P port -h IP
通过TCP/IP方式连接的时候,mysql会检查一张权限表,判断客户端IP是否被允许连接到mysql,此表为mysql库下的user表。
Unix socket连接方式并不是网络协议,一般在客户端和实例在同一台服务器使用,一般文件路径为sock=/tmp/mysql.sock.
mysql -u username -p password -S /tmp/mysql.sock

3.3用户权限管理
mysql数据库的账户安全性是十分重要的,数据库环境一般为测试环境和生产环境。账号权限一定要分配合理,规范。
查看用户情况,可以看见有三个。

在创建测试用户时,一般是专库账号,不能出现一个账号管理多个数据库,如果库特别多则看情况处理。
创建用户格式:
create user 用户名@主机IP identified by ‘密码’;
授权
grant select on erp.* to ‘erp_read’@’192.168.56.%’ identified by ‘erp123’;
表示允许192.168.56.0段的ip并且用户是erp_read,且只能访问数据库erp,权限为查看,密码为erp123.
flush privileges;刷新权限

浙公网安备 33010602011771号