以下操作均在root权限下进行!
dpkg -l | grep mysql。sudo apt install mysql-server。netstat -tap | grep mysql,如果看到有 mysql 的socket处于 LISTEN 状态则表示安装成功。sudo mysql -u root -p -u 表示选择登陆的用户名, -p 表示登陆的用户密码,现在是mysql数据库是没有密码的,Enter password:处直接回车,就能够进入mysql数据库。show databases 就可以查看当前的所有数据库。运行数据库安全配置向导 sudo 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.
注意:如果此时报错
Failed! Error: SET PASSWORD has no significance for user ‘root‘@‘localhost‘ as the authe。
退出当前设置密码流程,执行下面命令:# 命令进入mysql sudo mysql # sql命令行输入以下命令回车设置密码 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by '密码'; # exit回到终端命令行,重新运行数据库安全配置向导 sudo mysql_secure_installation # 输入刚才设置的密码即可。
root管理员从远程登录数据库,以确保数据库上运行的业务的安全性。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) : N #禁止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.
Dropping test database...
Success.
Removing privileges on test database...
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!
mysql服务状态systemctl status mysql 查看mysql服务状态。 Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2022-09-23 17:03:14 CST; 3 days ago
Process: 3711575 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
Main PID: 3711599 (mysqld)
lines 1-5...skipping...
再次用`mysql -u root -p`命令,`Enter password:`处输入刚设置的密码,回车,就能够进入`mysql`数据库;
使用 use mysql; 命令打开mysql命名的数据库;
`show tables` 显示当前数据库的表;
`select * from user` 查询`user`表里的数据(`user`表里是`mysql`数据库的所有账户信息)。
3306端口3306端口是否对外开放。netstat -an | grep 3306
# tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
如果显示如上,说明mysql端口目前只监听本地连接127.0.0.1。需要修改mysql的配置文件。
2. 首先编辑 /etc/mysql/mysql.conf.d/mysqld.cnf 配置文件
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
# 注释掉bind-address = 127.0.0.1
# 保存退出
mysql数据库,执行授权命令mysql -u root -p
mysql> grant all on *.* to root@'%' identified by '你的密码' with grant option;
mysql> flush privileges; # 刷新权限
mysql> exit
注意:此处授权语句中可能会
IDENTIFIED BY报语法错误ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IDENTIFIED BY '123456' WITH GRANT OPTION' at line 1,低版本MySQL中可以运行,MySQL8及以上可以尝试把IDENTIFIED BY '你的密码'这个一段删掉,再次执行。
MySQL# 执行exit命令退出MySQL服务
exit
# 重启MySQL
sudo service mysql restart
3306端口sudo ufw allow 3306
然后使用 navicat 等远程连接工具就可以登录了
注意:云服务器是在服务商控制台实例配置中添加端口放行。具体请查看对应服务商文档。