远程连接工具: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
具体如下:
若出现以下错误:
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';