彻底卸载

sudo apt purge mysql-*
sudo rm -rf /etc/mysql/ /var/lib/mysql
sudo apt autoremove
sudo apt autoclean

apt-get purge 与 apt-get remove是不同的,简单来说:

  • purge可以将包以及软件的配置文件全部删除
  • remove仅可以删除包,但不会删除配置文件

安装

可根据需要选择下面mysql常用包进行安装

sudo apt-get install mysql-server -y	#mysql 服务端
#sudo apt install mysql-client  -y 	#mysql 客户端
#sudo apt install libmysqlclient-dev -y #mysql 开发包

安装过程中如果没有报错信息,安装完成后,会自动启动mysql服务

检查mysql服务是否成功启动

方法有多种。常用如下:

 sudo netstat -tap | grep mysql

如下图则启动成功

sudo service mysql status

ubantu下可以直接用service命令查看服务运行状态,类似如下

mysql服务启动

如果未启动,则运行启动命令

sudo service mysql start

遇到了警告 su:warning blah blah blah... 

解决方法参考如下:

(MySQL 8, WSL 2) su: warning: cannot change directory to /nonexistent: No such file or directory · Issue #256 · miguelgrinberg/microblog · GitHub

sudo service mysql stop #先停止服务
sudo usermod -d /var/lib/mysql/ mysql #为 mysql 用户创建一个主目录
sudo service mysql start #然后再启动

成功启动

连接mysql

本地连接

前提是在本地安装mysql 客户端( sudo apt install mysql-client -y #mysql 客户端)

mysql -u用户 -p密码

通常情况

输入mysql -uroot -p 来登录root账号,不需要输入root密码。直接回车即可。

特殊情况

需要输入root密码的情况。但是,我们第一登录,并没有设置root用户的密码。

1、我们需要先找到默认的用户密码

 sudo cat /etc/mysql/debian.cnf

 2、用上面查到的默认的 user和 password 来登录

mysql -udebian-sys-maint -pRkqm8f6NHv1CYsrB

 3、设置root密码

mysql>use mysql;
mysql>flush privileges;
mysql>ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
mysql>flush privileges;

如下设置root@localhost密码为root

远程连接

需要用户有远程访问权限

查看已有用户

 use mysql; #切换到mysql
 
 select user,host from user; #查看user列表

如下图例子:

通过命令可以看到当前只有一个用户root,并且Host为localhost,即只能本地访问权限

创建用户

查看用户列表

select  user, host,authentication_string, plugin from user;

创建:CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';

在实际应用中,我们应避免明文指定密码,可以通过 PASSWORD 关键字使用密码的哈希值设置密码。

如下:

#test1用户密码为test1
#可先通过sql语句查看test1串的哈希值的,然后再设置密码为这个哈希值
SELECT password('test1'); 
CREATE USER 'test1'@'主机名' IDENTIFIED BY 'test1的哈希值';

开启远程访问权限

方法一:直接改表

update user set host='%' where user='用户名';

顾名思义,该方法就是直接修改更改"mysql"数据库里的"user"表里的"host"项,从"localhost"改为"%"

方法二:授权账户

通过GRANT命令可以授予主机远程访问权限(GRANT的详细用法,不在这里讲)

GRANT ALL PRIVILEGES ON *.* TO '用户名'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;

--赋予任何主机访问权限:%

GRANT ALL PRIVILEGES ON *.* TO '用户名'@'172.16.16.10' IDENTIFIED BY '密码' WITH GRANT OPTION;

--允许指定主机(IP地址)访问权限:具体ip 172.16.16.10

FLUSH PRIVILEGES;

--刷新权限表使上述更改生效

可能遇到的问题

在同一个网段,以上操作都没问题,但还是不能连接的情况,需要更改配置文件

1、打开 mysqld.cnf

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

2、找到bind-adderss = 127.0.0.1这行并注释掉。

bind-adderss = 127.0.0.1 改为如下:

#bind-adderss = 127.0.0.1

3、后重启mysql服务

sudo service mysql restart

注意

出于安全考虑,尤其是正式环境下

不推荐直接给root开启远程访问

建议做权限细分和限制

正式环境中,推荐通过创建mysql用户并给对应的用户赋权的形式来开放远程服务权限,并制定ip地址,赋权时根据用户需求,在GRANT命令中只开放select、update等权限,做到权限粒度最小化。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐