CentOS7 安装配置 MySQL

环境

阿里云学生服务器(¥9.9/月) CentOS 7.3 64位

下载 tar 包并解压缩

博主采用离线安装的方式,首先下载 Nginx 的 tar 包,博主选择的是 MySQL Community Server 5.7.30链接在这

选项
Select Version 5.7.30
Select Operating System Red Hat Enterprise Linux / Oracle Linux
Select OS Version Red Hat Enterprise Linux 7 / Oracle Linux 7 (x86, 64-bit)
Download Packages Compressed TAR Archive (mysql-5.7.30-el7-x86_64.tar.gz) 693.6M<br />MD5: 0373ad13127e93ea6a06ab09771f2a99

不过官网下载太慢了,这里放一个中科大的镜像,我的 100 Mbps 带宽下载速度能拉满。镜像页面版本比较多,可以直接搜索 mysql-5.7.30-el7-x86_64.tar.gz

下载完了记得校验一下,由于 MD5 非常容易碰撞,一定记得要在靠谱的源用 https 下载。

接下来就是一通操作,上传解压,我安装在 /usr/local/mysql/mysql-5.7.30

安装

由于现在的 MySQL 有闭源的风险,所以 CentOS 7 开始使用 MariaDB 替换了默认的数据库,记得先把它卸载。

rpm -qa | grep mariadb

以上指令应该可以看到一个 MariaDB 的版本,没有的话就不用卸载了(它完全兼容 MySQL,但是没必要留着)。

之后我们先来创建一个群组和用户,用来管理 MySQL:

groupadd mysql
useradd -g mysql mysql
passwd mysql

然后将 /usr/local/mysql 目录的所有者和群组设置为 mysql

cd /usr/local/
chown -R mysql:mysql mysql

创建一个 data 文件夹,用来存放一些数据:

cd ./mysql/mysql-5.7.30
mkdir data
chown -R mysql:mysql mysql

创建一个配置文件:

touch my.cnf
chown -R mysql:mysql my.cnf
vim my.cnf

my.cnf 内容如下:

[mysql]
socket=/var/lib/mysql/mysql.sock
# 默认字符集 utf-8
default-character-set=utf8

[mysqld]
socket=/var/lib/mysql/mysql.sock
# mysql server 端口,默认 3306,如无特殊需求不要更改
port = 3306
# 安装目录
basedir=/usr/local/mysql/mysql-5.7.30
# 保存数据的目录
datadir=/usr/local/mysql/mysql-5.7.30/data
# 允许的最大连接数
max_connections=200
# 默认字符集 utf-8
character-set-server=utf8
# 默认引擎
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M
explicit_defaults_for_timestamp=true

[mysql.server]
user=mysql
basedir=/usr/local/mysql/mysql-5.7.30

创建完成后复制一份到 /etc 目录下,创建软连接也可以:

cp my.cnf /etc/my.cnf
ln -s /usr/local/mysql/mysql-5.7.30/my.cnf /etc/my.cnf

正式安装 MySQL,bin/mysql_install_db 已经替换成 bin/mysqld --initialize 了:

bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/mysql-5.7.30 --datadir=/usr/local/mysql/mysql-5.7.30/data/

然后复制一份文件至 /etc/init.d 目录下,设置可执行权限,这就是启动用的:

cp ./support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld

接下来要启动服务:

/etc/init.d/mysqld restart

也许会有各种各样的错误信息,但搜索一下就能很快解决,最后可能剩下一条错误信息 MySQL server PID file could not be found![FAILED],找出相应的进程 kill 掉就好了:

ps -ef | grep mysqld
kill -9 pid # pid 指进程 id

最后输出如下两条信息就说明安装成功了:

Shutting down MySQL..                                      [  OK  ]
Starting MySQL.                                            [  OK  ]

环境变量

可以考虑把 bin 目录加进环境变量中:

vim /etc/profile

export PATH 之前添加以下脚本:

PATH = $PATH:/usr/local/mysql/mysql-5.7.30/bin

最后重新执行 /etc/profile 脚本,使环境变量生效:

# 先移除 PATH,以免发生一些意外情况,具体原因需要理解如何修改环境变量,这里不赘述了
unset PATH
# 然后重新执行 /etc/profile
source /etc/profile

当然直接重启也是可以的。

开机自启

创建 /usr/lib/systemd/system/mysql.service,并设置其内容如下:

[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target

[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/mysql-5.7.30/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
#Restart=on-failure
#RestartPreventExitStatus=1
#PrivateTmp=false

启用开机自启:

systemctl enable mysql.service

使用 MySQL

安装完成还需要进行用户的设置,首先登录 MySQL:

# 显示初始密码
cat /root/.mysql_secret
# 使用密码登录
mysql -u root -p

不过大概率这个密码是没用的,我们需要设置初始密码。

由于 MySQL 的用户要在登录之后才能修改,我们要跳过密码验证这一步,编辑 /etc/my.cnf,在 [mysqld] 下面加上 skip-grant-tables,使用 service mysqld restart 重启服务,然后直接登录。

use mysql;
# MySQL 5.7 后使用 authentication_string 而非 password 字段
update user set authentication_string=password('password') where user='root' and host='localhost';
# 刷新一下表
flush privileges;

当然修改密码的方式并非只有一种,最后重启服务。

改完密码记得把 skip-grant-tables 删掉!

远程登录

大多时候我们是需要远程访问数据库的,首先要在防火墙开放端口:

vim /etc/sysconfig/iptables

添加以下记录:

-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT

最后重启一下:

systemctl restart iptables

开放完端口我们还需要在 MySQL 中添加一个用于远程连接的用户:

use mysql;
# 可以看一下有多少用户
select host,user from user;
# 远程连接的用户 host 使用 '%' 可以匹配所有 ip,user 尽量不要使用 root,可以新建一个
create user 'username'@'%' identified by 'password';
# 授予操作所有数据库和表的权限,使用 with grant option 允许 username 授予自己的权限给它创建的用户
grant all privileges on *.* to 'username'@'%' with grant option;
flush privileges;

之后就可以尝试一下远程连接了,如果是云服务器,记得在服务器的控制台开放端口!

个人博客:https://wilfredshen.cn/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,907评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,987评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,298评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,586评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,633评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,488评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,275评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,176评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,619评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,819评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,932评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,655评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,265评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,871评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,994评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,095评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,884评论 2 354