Ubuntu20.04安装Mysql与远程连接

远程连接工具:Navicat 、beekeeper studio 社区版(开源、免费)

MySQL服务管理

sudo service mysql status   # 查看服务状态
sudo service mysql start   # 启动服务
sudo service mysql stop   # 停止服务
sudo service mysql restart   # 重启服务 

exit  #退出mysql

卸载MySQL

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

1、安装MySQL

apt-get update   #更新源

apt-get install mysql-server  

注意事项:

通过apt安装的mysql不需要像其他平台那样开启服务,因为已经默认开启,并且服务名叫做mysql,而不是mysqld一般安装完后,mysql服务都会自动启动哦。可以用上面的命令查看mysql是否正常运行:

2 、登录

安装的时候mysql中的用户是没有密码的,但在/etc/mysql/debian.cnf文件中生成了默认的用户和密码

两种登录进MYSQL的方法:

第一种:以root用户身份登录到MYSQL服务器:
(在MySQL 8.0上,auth_socket默认情况下,root用户通过插件进行身份验证,所以这种方法不需要输入密码直接可以登录!)直接输入以下命令就可以直接进入mysql

mysql
root@iZ2ze6629k505j6lx9b8qcZ:~# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.25-0ubuntu0.20.04.1 (Ubuntu)

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

第二种:默认账户登录:

使用以下命令查看安装时默认生成的用户名和密码

sudo cat /etc/mysql/debian.cnf
# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host     = localhost
user     = debian-sys-maint
password = 8I4KQ1K3Uf5FWMEH
socket   = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host     = localhost
user     = debian-sys-maint
password = 8I4KQ1K3Uf5FWMEH
socket   = /var/run/mysqld/mysqld.sock

 3、登录之后设置密码

MySQL 8.0上root 用户默认通过auth_socket插件授权。auth_socket插件通过 Unix socket 文件来验证所有连接到localhost的用户。这意味着你用密码是不能登录 root用户的。

将验证方法从auth_socket修改成mysql_native_password,就可以使用密码进行登录了。你可以通过运行下面的命令修改身份验证方法,实现为无密码的root用户设置密码,

use mysql;

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';   #123456 就是你自己设置的密码

FLUSH PRIVILEGES;  #刷新权限

mysql> use mysql; 
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
Query OK, 0 rows affected (0.01 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

密码修改后,退出Mysql后可使用以下命令登录Mysql

mysql -u root -p

4、设置远程访问

1、修改配置

退出mysql状态下,使用如下命令修改配置文件(使用此命令时可另起终端或用文章最开始的命令停止mysql服务)

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

 打开文件后,把下面这行注销

#bind-address = 127.0.0.1

2、改表法(推荐):

修改host字段的值,将localhost修改成需要远程连接数据库的ip地址。或者直接修改成%。修改成%表示,所有主机都可以通过root用户访问数据库。

登录mysql之后,使用 use mysql;  命令切换数据库,再使用如下命令更改"mysql" 数据库里的 "user" 表里的 "host"项,从"localhost"改称"%"

use mysql;
update user set host = '%' where user = 'root'; 

使用select host,user from user;(select Host,User,plugin from user;)或者select host,user,authentication_string from user\G命令查看用户消息情况

mysql> select host,user from user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| %         | root             |
| localhost | debian-sys-maint |
| localhost | mysql.infoschema |
| localhost | mysql.session    |
| localhost | mysql.sys        |
+-----------+------------------+
5 rows in set (0.00 sec)
mysql> select host,user,authentication_string from user\G
*************************** 1. row ***************************
                 host: %
                 user: root
authentication_string: *BCBBAAF352744C7E8EAF30864F293E34FD39F7A4
*************************** 2. row ***************************
                 host: localhost
                 user: debian-sys-maint
authentication_string: $A$005$=B
                                a9XGS V^kA
0Mh8UknCFTwTlC4gpMFc1mCTbULdtRM4XvgmEwM7Snc1
*************************** 3. row ***************************
                 host: localhost
                 user: mysql.infoschema
authentication_string: $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED
*************************** 4. row ***************************
                 host: localhost
                 user: mysql.session
authentication_string: $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED
*************************** 5. row ***************************
                 host: localhost
                 user: mysql.sys
authentication_string: $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED
5 rows in set (0.00 sec)

mysql>

3、授权法:

例如,你想root使用root从任何主机连接到mysql服务器的话。

//赋予权限格式:grant 权限 on 数据库对象 to 用户@IP(或者相应正则)
//注:可以赋予select,delete,update,insert,index等权限精确到某一个数据库某一个表。

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; //这里表示赋予该用户所有数据库所有表(*.*表示所有表),%表示所有IP地址。

最后,一定要使用文章最开始的MySQL服务管理命令停止MySQL服务,再重启MySQL服务

注意 :若第4步没做,可能远程连接时会出现第5步的情况

5、Navicat 远程连接可能出现的情况

解决办法如下:

使用如下命令修改配置文件

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

 打开文件后,把下面这行注销

#bind-address = 127.0.0.1

具体如下: 

image.png

 若出现以下错误:

ERROR 1130: Host xxx.xxx.xxx.xxx is not allowed to connect to this MySQL server

可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改"mysql" 数据库里的 "user" 表里的 "host"项,从"localhost"改称"%" 

使用如下命令进行更改

update user set host = '%' where user = 'root';

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值