Linux 安装配置 mysql

2022-08-06 16:10:33 浏览数 (1)

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

Mysql 简介

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

  • 官网链接:https://www.mysql.com/

系统安装 mysql

检查系统中是否已经安装了MySQL
  • 执行命令
代码语言:javascript复制
sudo netstat -tap | grep mysql

  • 没有任何输出表明没有安装
安装 Mysql
  • 查看当前发行版
代码语言:javascript复制
lsb_release -a

  • 根据自己的发行版选择命令安装 Mysql
代码语言:javascript复制
# ubuntu
sudo apt-get install mysql-server mysql-client
# debian
apt install mariadb-server mariadb-client

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

代码语言:javascript复制
Package ‘mysql-server‘ has no installation candidate

  • mariadb 是Mysql 的开源版

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。[2]

  • 对于 debian 10,也可以下载包手动安装
代码语言:javascript复制
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
  • 完成后查看是否安装成功
代码语言:javascript复制
$ sudo netstat -tap | grep mysql
tcp        0      0 localhost.localdo:mysql 0.0.0.0:*               LISTEN      28807/mysqld 
重置 root 密码
代码语言:javascript复制
sudo mysql_secure_installation
  • 初始密码为空,输入两次密码
  • 之后会有一些安全选项根据个人情况配置,或者一路 Y 过去
配置用户访问数据库权限
  • 现在使用非 root 用户访问 mysql 会被拒绝
代码语言:javascript复制
$ mysql
ERROR 1698 (28000): Access denied for user 'vvd'@'localhost'
  • 当db_users使用数据库时,将会通过系统用户认证表进行认证
  • 查看系统用户认证情况:
代码语言:javascript复制
$ sudo mysql

USE mysql;
 SELECT User, Host, plugin FROM mysql.user;
 ------ ----------- ------------- 
| User | Host      | plugin      |
 ------ ----------- ------------- 
| root | localhost | unix_socket |
 ------ ----------- ------------- 
  • 我当前用户 vvd,不在表里,无法顺利访问 mysql
  • 添加系统用户到数据库访问用户中:
代码语言:javascript复制
$ 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

代码语言:javascript复制
sudo systemctl restart mysql
# 或
sudo /etc/init.d/mysql stop 
sudo /etc/init.d/mysql start
  • 之后可以用该用户正常访问mysql了
代码语言:javascript复制
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

代码语言:javascript复制
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是否在监听端口命令
代码语言:javascript复制
netstat -tl | grep mysql

查看mysql是否启动命令
代码语言:javascript复制
ps -aux | grep mysqld

卸载 mysql
代码语言:javascript复制
sudo apt-get purge mariadb-*
  • yes 表示删除数据库文件
  • 检查是否删除干净
代码语言:javascript复制
$ dpkg --list|grep maria
$ netstat -tl | grep mysql
  • 如果没有任何输出表明确实删没了

参考资料

  • https://blog.csdn.net/weixin_39555415/article/details/114007923
  • https://blog.csdn.net/jlu16/article/details/82809937
  • https://blog.csdn.net/jlu16/article/details/82809937
  • https://blog.csdn.net/weixin_34664632/article/details/113295443
  • https://www.cnblogs.com/backtracker/p/11421955.html
  1. https://www.runoob.com/mysql/mysql-tutorial.html ↩
  2. https://www.jb51.net/article/135170.htm ↩

0 人点赞