网上找的Linux系统下Mysql安装教程大部分都是不完整,要么就是步骤凌乱,要不就是缺少步骤(例如需要开启防火墙授权访问端口),于是自己抽空整理了一份
前置工作:安装前先卸载系统自带版本(没有则可以跳过此步骤)
#查看系统自带版本 rpm -qa | grep mariadb #卸载自带版本(多个需要逐个执行) yum -y remove 版本1 yum -y remove 版本2 ...
安装包:mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
下载地址:https://dev.mysql.com/downloads/mysql/
下载安装包:
查看历史发布版本,并根据系统选择对应的安装包下载,这里以mysql5.7,Linux64位系统为例(注:需要登录oracle账户下载)
处理安装包:
#进入此文件夹 cd /usr/local #解压安装包 tar -zxvf apk/mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz -C ./ #将解压文件重命名为mysql mv mysql-5.7.31-linux-glibc2.12-x86_64/ mysql
准备工作:
#创建mysql用户组 groupadd mysql #创建mysql用户 useradd -r -g mysql mysql #修改mysql文件夹的归属用户组以及用户 chown -R mysql:mysql mysql/
编写mysql配置文件,在/etc下新建配置文件my.cnf,并进行以下配置
#mysql客户端配置 [client] #端口号 port=3306 #socket文件目录(可创建多个实例) socket=/var/lib/mysql/mysql.sock [mysql] no-auto-rehash #允许单个记录写入最大数据量 max_allowed_packet=128M default_character_set=utf8 #mysql服务端配置 [mysqld] #端口号 port=3306 #登录用户 user=mysql #默认字符集 character-set-server=utf8 #socket文件目录(可创建多个实例) socket=/var/lib/mysql/mysql.sock #跳过dns反向解析 skip-name-resolve log-slave-updates skip-external-locking explicit_defaults_for_timestamp=true #创建新表时将使用的默认存储引擎 default-storage-engine=INNODB #表名是否区分大小写(0-区分,1-不区分) lower_case_table_names=1 #安装目录 basedir=/usr/local/mysql #数据存放目录 datadir=/usr/local/mysql/data #数据临时存放目录 tmpdir=/usr/local/mysql/tmp #异常日志记录文件 log-error=/usr/local/mysql/logs/error.log #允许最大连接数 max_connections=1000 max_user_connections=1000 max_connect_errors=1000 wait_timeout=14400 interactive_timeout=100 connect_timeout=20 slave-net-timeout=30 #二进制文件存储目录 log-bin=/usr/local/mysql/logs/mysql-bin #二进制文件格式 binlog_format=mixed #二进制文件的最大值 max_binlog_size=128M #二进制文件缓存大小 binlog_cache_size=1M #二进制文件的有效天数 expire-logs-days=5 #并发连接数 back_log=500 #开启慢查询 slow-query-log #慢查询记录文件 slow-query-log-file=/usr/local/mysql/logs/mysql-slow.log #慢查询阈值 long_query_time=3 #使没有使用索引的慢查询也能记录到慢速日志里 #log_long_format #其它配置 server-id=10001 max-relay-log-size=256M relay-log=relay-bin transaction_isolation=READ-COMMITTED performance_schema=0 #myisam_recover key_buffer_size=64M #允许单个记录写入最大数据量 max_allowed_packet=16M #table_cache=3096 table_open_cache=6144 table_definition_cache=4096 sort_buffer_size=128K read_buffer_size=1M read_rnd_buffer_size=1M join_buffer_size=128K myisam_sort_buffer_size=32M tmp_table_size=32M max_heap_table_size=64M query_cache_type=0 query_cache_size=0 bulk_insert_buffer_size=32M thread_cache_size=64 #thread_concurrency=32 thread_stack=192K skip-slave-start #InnoDB存储引擎 innodb_data_home_dir=/usr/local/mysql/data innodb_log_group_home_dir=/usr/local/mysql/logs innodb_data_file_path=ibdata1:1G:autoextend innodb_buffer_pool_size=1G innodb_buffer_pool_instances=8 #innodb_additional_mem_pool_size=16M innodb_log_file_size=200M innodb_log_buffer_size=16M innodb_log_files_in_group=3 innodb_flush_log_at_trx_commit=0 innodb_lock_wait_timeout=10 innodb_sync_spin_loops=40 innodb_max_dirty_pages_pct=90 innodb_support_xa=0 innodb_thread_concurrency=0 innodb_thread_sleep_delay=500 #innodb_file_io_threads=4 innodb_concurrency_tickets=1000 log_bin_trust_function_creators=1 innodb_flush_method=O_DIRECT innodb_file_per_table innodb_read_io_threads=16 innodb_write_io_threads=16 innodb_io_capacity=2000 innodb_file_format=Barracuda innodb_purge_threads=1 innodb_purge_batch_size=32 innodb_old_blocks_pct=75 innodb_change_buffering=all innodb_stats_on_metadata=OFF [myisamchk] key_buffer_size=64M sort_buffer_size=512k read_buffer=2M write_buffer=2M [mysqlhotcopy] interactive-timeout [mysqld_safe] #malloc-lib=/usr/local/mysql/lib/mysql/libjemalloc.so
创建my.cnf配置文件中所配置的目录并赋权限
mkdir /var/lib/mysql chmod 777 /var/lib/mysql mkdir -p /usr/local/mysql/{data,tmp,logs} chmod 777 /usr/local/mysql
正式安装mysql服务:
#初始化 ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data #查看初始密码 less logs/error.log
后置工作:
#配置启动脚本 cp ./support-files/mysql.server /etc/init.d/mysqld #设置开机自启动 chkconfig mysqld on #检查开机自启动 chkconfig --list mysqld
出现以下信息表明mysqld 服务已经⽣效了,在2、3、4、5运⾏级别随系统启动⽽⾃动启动,以后可以直接使⽤service命令控制mysql的启停。
#配置环境变量 echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile #使配置生效 source /etc/profile #启动mysql服务 service mysqld start
#登录mysql服务 mysql -uroot -p初始密码 #修改root用户密码 set password for root@'localhost' = password('study'); #启用远程主机登录 use mysql; update user set user.Host='%' where user.User='root'; flush privileges;
注:要使远程能够登录访问还得进行“防火墙授权访问端口”,具体操作可查看https://www.cnblogs.com/54hsh/p/13355413.html
验证成果:
授权端口后可以用可视化工具测试远程是否能够连接,这里使用navicat
创建用户和数据库并赋权:
#创建用户 CREATE USER 'testuser'@'%' IDENTIFIED BY 'password'; #创建数据库 CREATE DATABASE IF NOT EXISTS test_db DEFAULT CHARSET utf8 COLLATE utf8_general_ci; #授权库表 GRANT ALL PRIVILEGES ON test_db.* TO 'testuser'@'%' IDENTIFIED BY 'password'; #刷新权限 FLUSH PRIVILEGES;