官方网站给出了多种安装方式, 如源码安装,压缩包安装, 二进制安装(如.deb
文件). 尽管可以通过包管理器 (如apt
,yum
) 来安装, 可能安装的并不是最新版的. 如果使用官方仓库源, 也不能保证兼容性.
因此这里使用压缩包方式安装MySQL8, 它适用于大多数发行版. 这里本系统为Deepin.
-
环境预处理: 安装前, 先删除原有mysql, 和配置,数据等文件, 如
/etc/my.cnf
或/etc/mysql/
-
MySQL依赖: mysql依赖于
libaio
库, 安装前先检查下是否已安装, 一般情况都有#检查是否已安装, 看是否提示已安装 apt search libaio #安装 apt install libaio1 #为啥多了个1? 因为仓库中名字就是这个..
- 1
- 2
- 3
- 4
-
下载: 通过浏览器下载, 地址:Download MySQL Community Server; 或使用curl下载, 如下所示
curl -L https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.16-linux-glibc2.12-x86_64.tar.xz -O
- 1
-
解压: 解压后, 可以凭自己喜好存于某个位置
tar -xJvf Downloads/mysql-8.0.16-linux-glibc2.12-x86_64.tar.xz
- 1
-
创建mysql用户: 官网建议, 以非root用户运行mysqld, 有助于安全性. 这里创建了
mysql
用户# 创建一个不能登录的系统用户mysql, 默认也创建了组 useradd -r -s /bin/false mysql
- 1
- 2
-
初始化mysqld : 在这个过程中会建立root用户, 生成权限表等, 并存入数据目录中, 如果不存在会自动生成, 经测试为
data
目录, 而不是官方说的mysql-files
(这是一个坑)! 初始化有以下两种方式:mysqld就是mysql服务端程序, 这里就是初始化该程序.
下面我们会通过
--user
指定mysqld以mysql
身份运行, 由于切换身份需要root权限, 所以还要加上sudo
该数据目录是mysqld存放数据库等文件的地方, 此时该文件夹的拥有者为mysql, 也就是说mysqld以mysql身份运行时只能写该目录内的数据, 大大保证了安全性
-
--initialize
: 生成root密码, 打印在控制台sudo bin/mysqld --initialize --user=mysql
- 1
-
-initialize-insecure
: root账户无密码bin/mysqld --initialize-insecure --user=mysql
- 1
-
-
运行mysqld : 同样的, 以
mysql
身份运行, 这里的mysqld_safe一个启动mysqld方便的工具.sudo bin/mysqld_safe --user=mysql &
- 1
-
修改root密码:
mysql
是一个命令行客户端, 在bin目录下, 最好设置环境变量, 这里略.#root有密码的登录方式 mysql -u root -p #root无密码的登录方式 mysql -u root --skip-password #进入后修改密码 ALTER USER 'root'@'localhost' IDENTIFIED BY 'root-password';
- 1
- 2
- 3
- 4
- 5
- 6
修改完后请关闭msyqld, 怎么关? 思路是使用
ps
的到进程号,kill
杀死它 -
增加安全性(可选) : mysql提供了
mysql_secure_installation
脚本来配置msyqld安全方面的配置, 功能如-
设置root账户密码
-
阻止外部访问root账户
-
删除匿名用户
-
等等
使用后最直观感受是, 用户密码不能是简单的123456了, 必须复杂… 开发环境下不建议使用.
#直接运行即可 mysql_secure_installation
- 1
- 2
-
-
自启配置: 我们要自启的是mysqld, 但是我不熟悉它的配置, 但是它提供了一个
mysql.server
, 能够方便的开启和关闭mysqld. 该脚本被写死了, 它规定mysql必须存在于/usr/local/
下, 目录名mysql
, 这里我使用符号连接来解决:ln -s $PWD/mysql-8.0.16-linux-glibc2.12-x86_64 /usr/local/mysql
- 1
deepin使用systemd来管理启动程序的, 它兼容Sys V, 因此也可使用Sys V的方式来让mysql加入自启, 如:
cp support-files/mysql.server /etc/init.d/mysql.server
- 1
但新时代就用新方法, 这里通过Systemd的方式加入自启, 在
/usr/lib/systemd/system/
目录下创建配置文件mysqld.service
[Unit] Description=MySQL Server After=network.target local-fs.target remote-fs.target [Service] Type=forking PIDFile=/usr/local/mysql/data/sidian-PC.pid ExecStart=/usr/local/mysql/support-files/mysql.server start ExecStop=/usr/local/mysql/support-files/mysql.server stop ExecReload=/usr/local/mysql/support-files/mysql.server restart User=mysql [Install] WantedBy=multi-user.target
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
要注意点是, PIDFile的名字一般为你电脑的域名, 如我的
sidian-PC
, 通过hostname
命令获取.User
选项规定mysql以mysql身份运行.接下来启动它
sudo systemctl enable mysqld.service # 加入自启 sudo systemctl start mysqld.service # 现在启动mysqld
- 1
- 2
大功告成!