前言
本文涉及的命令需要有一定的ubuntu基础。请搞清楚命令的具体使用环境和场景,以确保得到正确结果。介于有网友使用autoremove命令时出现的其他问题。我补充了注意事项。在另外一片博文中。请大家一定要注意!
彻底卸载
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仅可以删除包,但不会删除配置文件
注意!注意!注意!
这里一定要 清楚 autoremove 的正确用法。具体请参考我另外一片文章(auto 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等权限,做到权限粒度最小化。
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/fanrongwoaini/article/details/107518693
标签:Ubuntu20.04,mysql8,sudo,apt,密码,user,mysql,root From: https://www.cnblogs.com/huft/p/18663852