首先安装mysql程序
命令:sudo apt install mysql-server
2、安装完查看mysql启动状态:
命令:systemctl status mysql
3、 直接使用root账户登录然后修改密码就可以了, 代替下面第3步的操作:
a、 sudo mysql -uroot 回车直接登录
b、修改密码:alter user 'root'@'localhost' identified with mysql_native_password by '这里是密码';
c、执行:flush privileges;使密码生效,然后使用root用户登录。
然后第五步开始
3、配置mysql中root密码:
sudo mysql_secure_installation
Securing the MySQL server deployment.
Connecting to MySQL using a blank password.
VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?
Press y|Y for Yes, any other key for No:
这里输入:Y
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:
这里是密码强度:我服务器搭建的所以我选择:0
Please set the password for root here.
New password:
Re-enter new password:
Estimated strength of the password: 50
这里是创建密码,
其余的下面全部是Y就可以了
4、登录root用户:
如果登入用户错:Enter password:
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
需要重置root用户密码:
先查看获取默认用户: sudo vim /etc/mysql/debian.cnf
找到: 用户名:user = debian-sys-maint
密码:password = ecMdhCUfmsLmyGOq
用默认用户登录:
修改密码:alter user root@localhost identified with mysql_native_password by '这里是密码';
修改成功字样:Query OK, 0 rows affected (0.01 sec)
执行:flush privileges;使密码生效,然后使用root用户登录。
5、创建自己的用户:
create user '用户名'@'%' identified with mysql_native_password by '密码';
6、授权用户远程登录:
grant all privileges on *.* to '用户'@'%' with grant option;
7、刷新策略:flush privileges;
完成了,直接远程登录。
如果远程登录不上错误10038需要修改一个文件,
修改一个配置文件:sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
注释掉:#bind-address = 127.0.0.1
然后重启mysql服务,即可远程登录了
原文链接:https://blog.csdn.net/cyz141001/article/details/119028923
1、#查看有没有安装MySQL:
dpkg -l | grep mysql
2、 安装MySQL:
sudo apt install mysql-server
3、检查是否安装成功:
netstat -tap | grep mysql
通过上述命令检查之后,如果看到有 mysql 的socket处于 LISTEN 状态则表示安装成功。
4、登录mysql数据库可以通过如下命令:
mysql -u root -p
-u 表示选择登陆的用户名, -p 表示登陆的用户密码,现在是mysql数据库是没有密码的,Enter password:处直接回车,就能够进入mysql数据库。
然后通过 show databases; 就可以查看当前的所有数据库。
5、初始化数据库
为了确保数据库的安全性和正常运转,对数据库进行初始化操作。这个初始化操作涉及下面5个步骤。
(1)安装验证密码插件。
(2)设置root管理员在数据库中的专有密码。
(3)随后删除匿名账户,并使用root管理员从远程登录数据库,以确保数据库上运行的业务的安全性。
(4)删除默认的测试数据库,取消测试数据库的一系列访问权限。
(5)刷新授权列表,让初始化的设定立即生效。
root@ubuntu-virtual-machine:~# mysql_secure_installation
Securing the MySQL server deployment.
Connecting to MySQL using a blank password.
VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin? # 要安装验证密码插件吗?
Press y|Y for Yes, any other key for No: N # 这里我选择N
Please set the password for root here.
New password: # 输入要为root管理员设置的数据库密码
Re-enter new password: # 再次输入密码
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y # 删除匿名账户
Success.
Normally, root should only be allowed to connect from
‘localhost’. This ensures that someone cannot guess at
the root password from the network.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : # 禁止root管理员从远程登录,这里我没有禁止
… skipping.
By default, MySQL comes with a database named ‘test’ that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y # 删除test数据库并取消对它的访问权限
Success.
Success.
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y # 刷新授权表,让初始化后的设定立即生效
Success.
All done!
6、检查mysql服务状态:
systemctl status mysql
再次用mysql -u root -p命令,Enter password:处输入刚设置的密码,回车,就能够进入mysql数据库。
使用 use mysql; 命令打开mysql命名的数据库,显示当前数据库的表:show tables; 查询user表里的数据:select * from user;(user表里是mysql数据库的所有账户信息)
7、配置mysql允许远程访问,首先编辑 /etc/mysql/mysql.conf.d/mysqld.cnf 配置文件:
vim /etc/mysql/mysql.conf.d/mysqld.cnf
注释掉下面两行
bind-address = 127.0.0.1
mysqlx-bind-address =127.0.0.1
8、保存退出,然后进入mysql数据库,执行授权命令:
mysql -u root -p
mysql> grant all on . to root@‘%’ identified by ‘你的密码’ with grant option;
mysql> flush privileges; # 刷新权限
mysql> exit
然后执行exit命令退出mysql服务,再执行如下命令重启mysql:
systemctl restart mysql
现在Windows下可以使用Navicat图形化工具远程连接Ubuntu下的MySQL数据库,输入刚授权远程权限的密码。
9、修改数据库端口
使用命令show global variables like ‘port’;查看端口号
编辑/etc/mysql/mysql.conf.d/mysqld.cnf文件
vi /etc/mysql/mysql.conf.d/mysqld.cnf
在文件中添加port参数,port=13306样式来进行修改端口,如下图
10、重新启动mysql
systemctl restart mysql
11、查看端口
在SQL中执行命令:
show global variables like ‘port’;
原文链接:https://blog.csdn.net/Dwj1212/article/details/123451649
第一步:设置MySQL数据库允许远程访问
1.查看数据库用户表
MySQL数据库在默认情况下是只允许本地连入的,即用户仅能为“localhost”,具体信息可以用以下方法查看:
打开终端,输入
mysql -u root -p
进入mysql数据库,然后进入数据库“mysql”
mysql> use mysql
在数据库中查询“user”表中的“User”和“Host”信息
mysql> SELECT `Host`,`User` FROM user;
查询结果如下
+--------------+-------------------------+
| Host | User |
+--------------+-------------------------+
| localhost | root |
| localhost | debian-sys-maint |
| localhost | mysql.session |
| localhost | mysql.sys |
+--------------+-------------------------+
4 rows in set (0.00 sec)
可以看到用户“root”的Host是localhost,代表仅允许root用户在数据库所在设备登录,如果想使用root用户远程访问数据库,需要将“localhost”改为“%”(也可以新建一个允许远程访问的User,这样可以分开管理权限);
2.开启远程访问权限
开启远程访问权限可以使用赋权操作
使用赋权操作:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456';
(网上有直接修改“user”表的操作,我一开始也使用的这种办法,没有效果,还是无法远程访问,改为赋权操作后可以,怀疑只修改表的操作有问题)
此时再查询用户表会发现用户“root”的“Host”变为了“%”,这样数据库的修改就结束了
+--------------+-------------------------+
| Host | User |
+--------------+-------------------------+
| % | root |
| localhost | debian-sys-maint |
| localhost | mysql.session |
| localhost | mysql.sys |
+--------------+-------------------------+
4 rows in set (0.00 sec)
第二步:检查防火墙状态
即使在数据库中开放了权限,但没有在防火墙中开放使用的端口,远程设备仍然无法连接到数据库,当尝试ping数据所在设备IP没问题,但测试端口出现无响应的问题时,大概率是因为防火墙阻止了此端口的访问,可以通过以下方式查看
sudo ufw status
显示结果分为两种:
结果1:
状态:不活动
代表防火墙未打开;
结果2:
状态: 激活
至 动作 来自
- -- --
3306 ALLOW Anywhere
3306 (v6) ALLOW Anywhere (v6)
代表防火墙已打开,并开放3306端口;
当防火墙打开且没有开放所需端口时,远程设备无法访问,可以通过关闭防火墙或设置所需端口开放或设置对远程设备IP开放所有端口的操作解决;
关闭防火墙:
sudo ufw disable
设置端口3306开放:
sudo ufw allow 3306
设置对特定IP开放所有端口:
sudo ufw allow from 192.168.255.255
修改完防火墙后需要重启电脑生效,重启完成后即设置数据库允许远程访问完成。
1.开启数据库远程访问权限时不要直接修改“user”表的内容,使用赋权语句;
2.防火墙在关闭状态下可以允许任意来源的访问;
3.如果不想关闭防火墙需要开放端口或允许来自特定IP的访问;
原文链接:https://blog.csdn.net/Chen_9524/article/details/124716884
Navicat远程连接mysql数据库报1251错误,如下图所示。
解决方法:
1、进入容器
docker exec -it mysql /bin/bash #mysql为数据库容器名称
2、进入mysql
输入:mysql -u root -p
3、 对远程授权
GRANT ALL ON . TO ‘root’@‘%’;
4、更改密码的加密规则
ALTER USER ‘root’@‘%’ IDENTIFIED BY ‘password’ PASSWORD EXPIRE NEVER;
5、更改root的密码
ALTER USER ‘root’@‘%’ IDENTIFIED WITH mysql_native_password BY ‘root’;
6、刷新数据库
flush privileges;
再次用Navicat远程连接数据库
原文链接:https://blog.csdn.net/qiaoliong/article/details/126610932