本文记录 Linux 下mysql 的安装配置过程。
Mysql 简介
MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。 [1]
- 官网链接:https://www.mysql.com/
系统安装 mysql
检查系统中是否已经安装了MySQL
- 执行命令
sudo netstat -tap | grep mysql
- 没有任何输出表明没有安装
安装 Mysql
- 查看当前发行版
lsb_release -a
- 根据自己的发行版选择命令安装 Mysql
# 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,也可以下载包手动安装
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
:
- 完成后查看是否安装成功
$ 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 会被拒绝
$ mysql
ERROR 1698 (28000): Access denied for user 'vvd'@'localhost'
- 当db_users使用数据库时,将会通过系统用户认证表进行认证。
- 查看系统用户认证情况:
$ sudo mysql
USE mysql;
SELECT User, Host, plugin FROM mysql.user;
------ ----------- -------------
| User | Host | plugin |
------ ----------- -------------
| root | localhost | unix_socket |
------ ----------- -------------
- 我当前用户
vvd
,不在表里,无法顺利访问 mysql - 添加系统用户到数据库访问用户中:
$ 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服务
代码语言:javascript复制否则报错:
ERROR 1524 (HY000): Plugin 'auth_socket' is not loaded
sudo systemctl restart mysql
# 或
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start
- 之后可以用该用户正常访问mysql了
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
表示删除数据库文件- 检查是否删除干净
$ 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
- https://www.runoob.com/mysql/mysql-tutorial.html ↩
- https://www.jb51.net/article/135170.htm ↩