最近自己买了台阿里云服务器用来学习,在安装mysql的时候遇到很多坑,后来参考下边这位老哥的步骤,成功完成安装。感觉挺详细靠谱,推荐给大家以供学习。
安装必要的组件
yum install –y autoconf automake imake libxml2-devel expat-devel cmake gcc gcc-c++ libaio libaio-devel bzr bison libtool ncurses5-devel
下载mysql (建议大家直接切换至/usr/local/目录进行下载)
wget https://dev.mysql.com//Downloads/MySQL-5.7/mysql-5.7.11-linux-glibc2.5-x86_64.tar.gz
将压缩包拷贝到/usr/local 使用ftp工具
cd /usr/local/
tar zxvf mysql-5.7.11-linux-glibc2.5-x86_64.tar.gz 解压
mv mysql-5.7.11-linux-glibc2.5-x86_64 mysql 重命名
进入安装文件夹下的support-files
cd /usr/local/mysql/support-files/
cp my-default.cnf /etc/my.cnf 将mysql配置文件拷贝到etc下,提示文件已经存在输入yes
vi /etc/my.cnf 编辑配置文件(也可用我下方提供的my.cnf文件)
添加
character-set-client-handshake = FALSE 添加在[mysqld]下方即可
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
[client]
default-character-set=utf8mb4
复制mysql.server 到/etc/init.d/ 目录下【目的想实现开机自动执行效果】
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
vi /etc/init.d/mysql
修改如下内容
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
创建Linux新用户
groupadd mysql #建立一个mysql的组
useradd -r -g mysql mysql #建立mysql用户,并且把用户放到mysql组
passwd mysql (mysql123) #给mysql用户设置一个密码
chown -R mysql:mysql /usr/local/mysql/ 给目录/usr/local/mysql 更改拥有者
初始化 mysql 的数据库
进入mysql的bin
cd /usr/local/mysql/bin
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
记录生成的密码(参考下图选中部分)
若未生成密码,请参考如下链接:https://blog.csdn.net/saife/article/details/51133317
给数据库加密
./mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data
启动mysql(为了不让进程卡主,可在启动mysql的命令后加上&代表此进程在后台运行)
./mysqld_safe --user=mysql &
执行此命令若报如下错误,请参考如下解决方案:
mkdir logs #创建logs文件夹
touch error.log #创建日志文件
chown -R mysql:mysql /usr/local/mysql/ #修改logs文件权限为mysql
./mysqld_safe --user=mysql & #重新启动mysql服务
查看进程
ps -ef|grep mysql
保证在bin目录下
cd /usr/local/mysql/bin/
./mysql -uroot -p (输入临时密码)
修改密码
set password=password('/* 新密码 */');
授权远程访问
grant all privileges on *.* to root@'%' identified by '/* 新密码 */';
注:红色部分表示mysql的root账户
use mysql; // 进入数据库
select host,user from user; 【多出1条远程登录用户记录】
执行刷新
mysql>flush privileges;
在Linux命令行中将3306端口打开例外
/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
firewall-cmd --zone=public --add-port=3306/tcp --permanent 重启后不失效
firewall-cmd --reload
设置开机自启动
添加服务mysql
chkconfig --add mysql
设置mysql服务为自动
chkconfig mysql on
重启查看进程
ps -ef|grep mysql
将mysql添加到环境变量
修改/etc/profile文件使其永久性生效,并对所有系统用户生效,在文件末尾加上如下两行代码
PATH=$PATH:/usr/local/mysql/bin
export PATH
执行 命令source /etc/profile或 执行点命令 ./profile使其修改生效,执行完可通过echo $PATH命令查看是否添加成功。
附录:my.cnf文件配置
[client]
#客户端设置
port = 3306
socket = /usr/local/mysql/data/mysql.sock
default-character-set = utf8mb4
[mysqld]
user = mysql
port = 3306
socket = /usr/local/mysql/data/mysql.sock
server-id = 1
pid-file = /usr/local/mysql/data/mysql.pid
#安装目录
basedir = /usr/local/mysql
#数据库存放目录
datadir = /usr/local/mysql/data/
#系统数据库编码设置,排序规则
character_set_server = utf8mb4
collation_server = utf8mb4_bin
back_log = 1024
explicit_defaults_for_timestamp = ON
lower_case_table_names = 0
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
max_connections = 512
max_connect_errors = 1000000
table_open_cache = 1024
max_allowed_packet = 8M
thread_stack = 256K
thread_cache_size = 384
skip-external-locking
interactive_timeout = 600
wait_timeout = 3600
log_timestamps = SYSTEM
log-error = /usr/local/mysql/logs/error.log
#默认使用InnoDB存储引擎
default_storage_engine = InnoDB
innodb_buffer_pool_size = 64M
innodb_purge_threads = 1
innodb_log_buffer_size = 2M
innodb_log_file_size = 128M
innodb_lock_wait_timeout = 120
bulk_insert_buffer_size = 32M
myisam_sort_buffer_size = 8M
# MySQL重建索引时所允许的最大临时文件的大小
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
lower_case_table_names=1
[mysqldump]
quick
max_allowed_packet = 16M
[myisamchk]
key_buffer_size = 8M
sort_buffer_size = 8M
read_buffer = 4M
write_buffer = 4M
大家切记,修改my.cnf文件之后需要重启mysql才能生效,切记切记、血泪教训!!!
参考资料:CentOS7中安装MySQL5.7