Mysql王者晋级之路第一章Mysql安装

安装Mysql5.7

  1. 官网下载mysql5.7.tar.gz
  2. 上传至服务器
  3. 创建mysql组用户
groupadd mysql
  1. 创建mysql用户,设定归属组,以及使用的shell
useradd -g mysql mysql -s  /sbin/nologin
  1. 创建 /data/mysql目录用于存储mysql数据文件,创建/usr/local/mysql目录用于存储mysql软件文件
mkdir -p /usr/local/mysql (这里不建议创建,影响后面的复制操作)
mkdir -p /data/mysql 
chown mysql:mysql -R  /data/mysql
chown mysql:mysql -R /usr/local/mysql

chown -R 处理指定目录以及其子目录下的所有文件

  1. 解压上传的软件包并复制到/usr/lcoa/mysql下
tar -zxvf mysql-5.7.29-el7-x86_64.tar.gz
cp -r mysql-5.7.29-el7-x86_64/ /usr/local/mysql 
ln -s mysql /usr/local/mysql

cp时候注意/usr/local/mysql如果已经存在,它会把 mysql-5.7这个目录也拷贝进去,这并不是我们想要的,我们只需要将mysql-5.7目录下的子文件与目录拷贝即可,所以不建议创建/usr/local/mysql
这个软连接的创建是为了后面直接只用mysql命令

  1. 创建/etc/my.cnf文件 (我是对着书敲了一遍,真的。。。。很难受)
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
  1. 初始化数据库
 cd /usr/local/mysql/bin
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/data/mysql/ --user=mysql --initialize
  1. 启动数据库
./mysqld_safe --defaults-file=/etc/my.cnf &
  1. 查看初始密码,登录数据库,并修改root登录密码
cat /data/mysql/error.log | grep password
set password='123456'
alter user 'root'@'localhost' password expire never;(密码永不过期)
flush privileges;

#如果以--initialize-insecure 初始化数据则更改root密码使用
mysqladmin -uroot -p password '123455'

初始密码

mysql root密码忘记

ps -ef | grep mysql
kill -9 pid 
./mysqld_safe --defaults-file=/etc/my.cnf --skip-grant-tables &
use mysql
update user set authentication_string=password('root@123')  where user='root';
flush privileges;

关闭mysql,重启即可

二进制安装包安装后如何通过systemctl 来管理

  1. 将/usr/local/mysql/support-files/mysql.server 拷贝到/etc/init.d/mysqld
cp /usr/local/mysql/support-files/mysql.server  /etc/init.d/mysqld
  1. 修改mysqld 文件中的basedir 和datadir
  2. 重启服务器

允许远程连接

use mysql;
GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY 'root@wch';
FLUSH PRIVILEGES;

开放3306端口

vi /etc/sysconfig/iptables (添加)
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

你可能感兴趣的:(数据库,Linux,mysql)