Linux 安装配置 mysql

本文最后更新于:2022年7月4日 上午

本文记录 Linux 下mysql 的安装配置过程。

Mysql 简介

MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。 [1]

系统安装 mysql

检查系统中是否已经安装了MySQL

  • 执行命令
1
sudo netstat -tap | grep mysql
  • 没有任何输出表明没有安装

安装 Mysql

  • 查看当前发行版
1
lsb_release -a
  • 根据自己的发行版选择命令安装 Mysql
1
2
3
4
# ubuntu
sudo apt-get install mysql-server mysql-client
# debian
apt install mariadb-server mariadb-client

尝试安装不合适自己发行版的包会报错

1
Package ‘mysql-server‘ has no installation candidate
  • mariadb 是Mysql 的开源版

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。

MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。[2]

  • 对于 debian 10,也可以下载包手动安装
1
2
wget http://repo.mysql.com/mysql-apt-config_0.8.13-1_all.deb
sudo apt install ./mysql-apt-config_0.8.13-1_all.deb
  • 你将看到配置菜单,可以从中选择要安装的MySQL版本,选好后 -> OK

  • 完成后查看是否安装成功
1
2
$ sudo netstat -tap | grep mysql
tcp 0 0 localhost.localdo:mysql 0.0.0.0:* LISTEN 28807/mysqld

重置 root 密码

1
sudo mysql_secure_installation
  • 初始密码为空,输入两次密码
  • 之后会有一些安全选项根据个人情况配置,或者一路 Y 过去

配置用户访问数据库权限

  • 现在使用非 root 用户访问 mysql 会被拒绝
1
2
$ mysql
ERROR 1698 (28000): Access denied for user 'vvd'@'localhost'
  • 当db_users使用数据库时,将会通过系统用户认证表进行认证
  • 查看系统用户认证情况:
1
2
3
4
5
6
7
8
9
10
$ sudo mysql

USE mysql;
SELECT User, Host, plugin FROM mysql.user;
+------+-----------+-------------+
| User | Host | plugin |
+------+-----------+-------------+
| root | localhost | unix_socket |
+------+-----------+-------------+

  • 我当前用户 vvd,不在表里,无法顺利访问 mysql
  • 添加系统用户到数据库访问用户中:
1
2
3
4
5
6
7
8
9
$ sudo mysql

mysql> USE mysql;
mysql> CREATE USER 'vvd'@'localhost' IDENTIFIED BY '';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'vvd'@'localhost';
mysql> UPDATE user SET plugin='unix_socket' WHERE User='vvd';
mysql> FLUSH PRIVILEGES;
mysql> exit;

注意,plugin='unix_socket' 这个插件配置为上文中root的相同插件,我在 debian 10 下是 unix_socket,ubuntu 是 auth_socket

  • 重启mysql服务

否则报错:ERROR 1524 (HY000): Plugin 'auth_socket' is not loaded

1
2
3
4
sudo systemctl restart mysql
# 或
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start
  • 之后可以用该用户正常访问mysql了
1
2
3
4
5
6
7
8
9
10
11
12
vvd $ mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 36
Server version: 10.3.31-MariaDB-0+deb10u1 Debian 10

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> exit;
Bye

Docker 安装 mysql

1
2
3
4
5
6
7
docker run -d \
--name mysql \
-e MYSQL_ROOT_PASSWORD=<你的mysql密码> \
-p 13306:3306 \
-v /docker/volumns/mysql/data:/var/lib/mysql \
--restart unless-stopped \
mariadb:10.4.7-bionic

mysql 启动配置

启动方式

1、使用 service 启动:service mysqld start

2、使用 mysqld 脚本启动:/etc/inint.d/mysqld start

3、使用 safe_mysqld 启动:safe_mysqld&

停止

1、使用 service 启动:service mysqld stop

2、使用 mysqld 脚本启动:/etc/inint.d/mysqld stop

3、mysqladmin shutdown

重启

1、使用 service 启动:service mysqld restart

2、使用 mysqld 脚本启动:/etc/inint.d/mysqld restart

其他命令

查看mysql是否在监听端口命令

1
netstat -tl | grep mysql

查看mysql是否启动命令

1
ps -aux | grep mysqld

卸载 mysql

1
sudo apt-get purge mariadb-*

  • yes 表示删除数据库文件
  • 检查是否删除干净
1
2
$ dpkg --list|grep maria
$ netstat -tl | grep mysql
  • 如果没有任何输出表明确实删没了

参考资料


Linux 安装配置 mysql
https://www.zywvvd.com/notes/system/linux/linux-mysql-install/linux-mysql-install/
作者
Yiwei Zhang
发布于
2022年1月18日
许可协议