前言

MySQL是一个开源数据库管理系统,通常作为流行的LAMP(Linux,Apache,MySQL,PHP / Python / Perl)堆栈的一部分安装。它使用关系数据库和SQL(结构化查询语言)来管理其数据。

首先卸载掉原来的mysql

第1步,依次执行下面的语句

sudo apt-get autoremove --purge mysql-server
sudo apt-get remove mysql-server
sudo apt-get autoremove mysql-server
sudo apt-get remove mysql-common

第2步,清理残留数据
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P

安装MySQL

  1. 更新列表
    sudo apt-get update
  2. 安装MySQL服务器
    sudo apt-get install mysql-server
    在安装过程中,系统将提示您创建root密码。选择一个安全的,并确保记住它,因为后面需要用到这个密码。
  3. 安装MySQL客户端
    sudo apt-get install mysql-client

mysql-server和mysql-client区别
mysql-server 是MySQL核心程序将安装MySQL数据库服务器,用于生成管理多个数据库实例,持久保存数据并为其提供查询接口(SQL),供不同客户端调用。
mysql-client 是操作数据库实例的工具,允许连接到MySQL服务器使用该查询接口。它将为您提供MySQL命令行程序。
如果只需要连接到远程服务器并运行查询,只安装mysql-client就可以了。如果是服务器只提供连接服务的只需要安装mysql-server。

登录MySQL

sudo mysql -u root -p
show databases;
use mysql;
show tables;
select host,user from user;
#添加登录账号,允许远程访问'%'
grant all privileges on *.* to 'admin'@'%' identified by 'pass12345xx' with grant option;
注意:报 ERROR 1064 (42000)提示意思是不能用grant创建用户,mysql 8.0以前的版本可以使用grant在授权的时候隐式的创建用户,8.0以后已经不支持,所以必须先创建用户,然后再授权,命令如下:
创建用户,并设置密码
CREATE USER 'admin'@'%' IDENTIFIED BY 'pass12345xx';
用户授权
grant all privileges on *.* to 'admin'@'%';
刷新授权缓存
flush privileges;
查询用户表
SELECT User, Host FROM user;
退出mysql后,重启mysql服务
systemctl restart mysql.service
`

配置MySQL远程登录
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 打开配置文件,找到bind-address = 127.0.0.1这一行 改为bind-address = 0.0.0.0即可或简单一点注释掉也行 修改完成保存后,需要重启MySQL服务才会生效 systemctl restart mysql.service

配置MySQL

  1. 运行MySQL初始化安全脚本(- 可跳过)
    sudo mysql_secure_installation
    mysql_secure_installation脚本设置的东西:更改root密码、移除MySQL的匿名用户、禁止root远程登录、删除test数据库和重新加载权限。除了询问是否要更改root密码时,看情况是否需要更改,其余的问题都可以按Y,然后ENTER接受所有后续问题的默认值。使用上面的这些选项可以提高MySQL的安全。
  2. 测试MySQL
    无论你如何安装它,MySQL应该已经开始自动运行。要测试它,请检查其状态。
    systemctl status mysql.service
    将看到类似于以下内容的输出:
    ● mysql.service - MySQL Community Server
    Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: en
    Active: active (running) since Wed 2016-11-23 21:21:25 UTC; 30min ago
    Main PID: 3754 (mysqld)
    Tasks: 28
    Memory: 142.3M
    CPU: 1.994s
    CGroup: /system.slice/mysql.service
    └─3754 /usr/sbin/mysqld

MySQL数据库基本使用

  1. 启动MySQL数据库服务
    sudo service mysql start

    sudo systemctl start mysql.service
  2. 重启MySQL数据库服务
    sudo service mysql restart

    sudo systemctl restart mysql.service
  3. 停止MySQL数据库服务
    sudo service mysql stop

    sudo systemctl stop mysql.service
  4. 查看MySQL运行状态
    sudo service mysql status

    sudo systemctl status mysql.service
  5. 设置MySQL服务开机自启动
    sudo service mysql enable

    sudo systemctl enable mysql.service
  6. 停止MySQL服务开机自启动
    sudo service mysql disable

    sudo systemctl disable mysql.service

systemctl和service的区别
Linux 服务管理两种方式service和systemctl,以前都用service命令管理mysql,现在liunx系统升级了,又有了新的更好的方法管理系统进程,现在使用systemctl命令管理mysql。
service是一个脚本命令,分析service可知是去/etc/init.d目录下执行相关程序。service和chkconfig结合使用。
服务配置文件存放目录/etc/init.d/
Systemd是一个系统管理守护进程、工具和库的集合,是Linux系统最新的初始化系统(init),作用是提高系统的启动速度,尽可能启动较少的进程,尽可能更多进程并发启动。
Systemd对应的进程管理命令是systemctl,主要负责控制Systemd系统和服务管理器。同时兼容service命令。
在Linux生态系统中,Systemd被部署到了大多数的标准Linux发行版中,只有为数不多的几个发行版尚未部署。Systemd通常是所有其它守护进程的父进程,但并非总是如此。

MySQL的配置文件

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
配置MySQL远程登录
有时候,为了开发方便,我们需要使用本地电脑远程访问和管理MySQL数据库。默认情况下,为了安全MySQL只允许本地登录,如果要开启远程连接,则需要修改/etc/mysql/mysql.conf.d/mysqld.cnf配置文件。
打开配置文件,找到bind-address = 127.0.0.1这一行
改为bind-address = 0.0.0.0即可或简单一点注释掉也行
修改完成保存后,需要重启MySQL服务才会生效

MySQL创建用户与授权

使用root用户登录
登录mysql并输入密码
mysql -u root -p

mysql 8 修改密码方式
alter user 'root'@'localhost' identified by '这里填你要的密码';
注:mysql8 初次安装后,需要先通过cat /var/log/mysqld.log | grep password 命令查看密码,修改密码时,需要 符合长度,且含有数字、小写或大写字母、特殊字符。

无需重启数据库即可生效(且mariadb自动会被替换,不再生效)
退出MySQL命令行
mysql> quit

  • 创建用户
    CREATE USER 'username'@'host' IDENTIFIED BY 'password';
    CREATE USER 'root'@'%' IDENTIFIED BY 'abc123';
    username:你将创建的用户名
    host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%
    password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器

注意,使用%通配符创建外网访问用户后,登录时需要明确访问的IP地址,例如
mysql -u test -h 115.28.203.224 -p
grant all privileges on *.* to 'root'@'%';
例子
CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456';
CREATE USER 'pig'@'192.168.1.101' IDENDIFIED BY '123456';
CREATE USER 'pig'@'%' IDENTIFIED BY '123456';
CREATE USER 'pig'@'%' IDENTIFIED BY '';
CREATE USER 'pig'@'%';
用户授权
GRANT privileges ON databasename.tablename TO 'username'@'host';
privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL
databasename:数据库名
tablename:表名

刷新授权
flush privileges;
这一步一定要做,不然无法成功!这句表示从mysql数据库的grant表中重新加载权限数据,因为MySQL把权限都放在了cache中,所以在做完更改后需要重新加载。
例子
GRANT SELECT, INSERT privileges ON test.user TO 'pig'@'%';
GRANT ALL privileges ON . TO 'pig'@'%';
GRANT ALL privileges ON maindataplus.* TO 'pig'@'%';
设置与更改用户密码
ALTER USER 'username'@'host' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
撤销用户权限
REVOKE privileges ON databasename.tablename FROM 'username'@'host';
privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL
databasename:数据库名
tablename:表名

具体信息可以用命令SHOW GRANTS FOR 'pig'@'%'; 查看。
删除用户
DROP USER 'username'@'host';
查看用户信息
切换mysql数据库
use mysql;
查询用户表
SELECT User, Host FROM user;

UserHost
diming%
debian-sys-maintlocalhost
mysql.sessionlocalhost
mysql.syslocalhost
rootlocalhost
最后修改:2024 年 09 月 20 日
如果觉得我的文章对你有用,请随意赞赏