Ubuntu18.04下安装MySQL和phpMyAdmin
查看有没有安装过MySQL
1 | dpkg -l | grep mysql |
如果安装过的话会有mysql-server,如果没有安装过,那么就继续吧!
安装
1 | apt install mysql-server |
安全设置
此时,MySQL的密码为空,可以通过mysql -u root -p
,遇到密码直接回车就进到数据库了。
接下来,为了确保数据库的安全性和正常运转,对数据库进行初始化操作。这个初始化操作涉及下面5个步骤。
(1)安装验证密码插件。
(2)设置root管理员在数据库中的专有密码。
(3)随后删除匿名账户,并禁止root管理员从远程登录数据库,以确保数据库上运行的业务的安全性。
(4)删除默认的测试数据库,取消测试数据库的一系列访问权限。
(5)刷新授权列表,让初始化的设定立即生效。
1 | # 这里对于第1点和第3点选择了NO, 视个人情况而定 |
此时,就只能通过账号密码登录MySQL了。但是,此时无法通过远程来访问,对于正式环境来说,就无法用图形化工具查看数据库的内容。
MySQL不需要密码也能登陆问题
1 | > use mysql; |
Navicat远程连接
!!!生产环境不建议开放数据库的远程访问。
配置MySQL允许远程访问
1
2
3
4
5vim /etc/mysql/mysql.conf.d/mysqld.cnf
# 注释掉 bind-address = 127.0.0.1
# 或
# 修改为:bind-address = 0.0.0.0为需要远程登录的用户赋予权限
1
2
3
4
5
6
7
8
9
10
11
12
13# 普通用户远程连接
grant all on *.* to admin@'%' identified by '123456' with grant option;
flush privileges;
# 允许任何ip地址(%表示允许任何ip地址)的电脑用admin帐户和密码(123456)来访问这个mysql server。
# 注意admin账户不一定要存在。
# root用户远程连接
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
flush privileges;
# 查看系统用户
# use mysql;
# select user,host from user;重启MySQL
1
systemctl restart mysql
打开Navicat就可以远程连接上了(如果是生产环境,通常还需要检查安全组是否有开放默认的3306端口)
Navicat premium破解教程:https://www.52pojie.cn/forum.php?mod=viewthread&tid=1142909
如果使用上面的方法破解不成功,可以删除Navicat的注册表再重试一次。彻底删除Navicat
搭建phpMyAdmin实现生产环境的数据库访问
PhpMyAdmin 是一个用 PHP 编写的软件工具,可以通过 web方式控制和操作 MySQL 或 MariaDB 数据库。通过 phpMyAdmin 可以完全对数据库进行操作,例如建立、复制和删除数据等等,这样 数据库的管理就会变得相当简单。
下载phpMyAdmin文件安装(推荐):
1 | # mysql -V |
这时候浏览器访问http://mysql.xxx.com
就可以看到如下页面了。
使用apt安装(了解即可,不推荐):
该方式会安装apache2
,在服务器上如果有nginx
的话还是推荐用上面的方式,减少程序的复杂性。
1 | # 安装phpmyadmin |
查看安装的文件:
dpkg -L phpmyadmin
配置文件:
/etc/phpmyadmin
项目目录:
/usr/share/phpmyadmin
如果是在本地使用,并且apache的80端口未被占用,可以使用下面方法启动phpmyadmin
1
2
3
4
5
6
7
8 # 设置软链接
sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin
# 修改php配置文件(注意版本不一定和这里一样是7.2)
sudo vim /etc/php/7.2/apache2/php.ini
# display_errors = On(显示错误日志,出现两次,都要改,不然无效)
# extension=php_mbstring.dll (开启mbstring)
# 重启apache
sudo /etc/init.d/apache2 restart此时,浏览器输入
http://localhost/phpmyadmin
就可以访问了。
phpmyadmin安装问题记录
没有找到 PHP 扩展 mbstring,而您现在好像在使用多字节字符集。没有 mbstring 扩展的 phpMyAdmin 不能正确分割字符串,可能产生意想不到的结果。
1
2
3
4
5sudo apt-get install php-mbstring
# 可以通过whereis php来找到php的安装位置
vim /etc/php/7.2/cli/php.ini
# ;extension=php_mbstring.dll 添加下面一行
extension=mbstring.so变量 $cfg[‘TempDir’] (./tmp/)无法访问。phpMyAdmin无法缓存模板文件,所以会运行缓慢。
1
2
3
4
5
6# 进入phpmyadmin的安装目录
cd /var/www/phpmyadmin
# 创建缓存目录文件夹
mkdir tmp
# 给文件夹赋予所有权限
chmod 777 tmp配置文件现在需要一个短语密码。
1
2
3
4vim /var/www/phpmyadmin/config.inc.php
# $cfg['Servers'][$i]['auth_type'] = 'cookie';的时候必须提供该短语密码
$cfg['blowfish_secret'] = 'i am ionluo, you are abcdefghijklmnopqrstuvwxyzabcdefgh';使用mysql的账号密码无法登录。
进入mysql的配置文件目录,打开debian.cnf文件
vim /etc/mysql/debian.cnf
使用client里面的账号密码登录phpmyadmin, 找到“账户”→“新增用户账户”
新增一个主机名是本地,具有全局权限的账户即可登录。
如果mysql命令行可以登录的话,也可以直接使用mysql命令去修改账户的信息, 同理也可以添加,这里不赘述了。
1
2
3
4
5
6# mysql -u[用户名] -p -P [端口,默认3306]
mysql> use mysql;
mysql> select host,user,authentication_string from user;
mysql> update mysql.user set authentication_string=password('123456') where user='root' and host='localhost';
mysql> flush privileges;
mysql> quit
MySQL不需要密码就能登录问题
因为执行了一个更改数据库root用户密码的命令,当我更改完后,发现用我新密码和旧密码都能登陆,于是感觉没有输密码,直接回车就能登录,而我在配置中也没有进行免密码登陆的操作,最后,执行了一条命令解决
update user set plugin = "mysql_native_password";
修改密码及解决无密码登陆问题都在下面命令中:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16# 无密码即可登录,如mysql, mysql -uroot, mysql -uroot -p 之后不输入密码直接回车
mysql -u[用户名] -p -P [端口,默认3306]
# 无password字段的版本,也就是版本<=5.7的
update mysql.user set authentication_string=password("你的密码") where user='root';
# 有password字段的版本,版本>5.7的
update mysql.user set password=password('你的密码') where user='root';
update mysql.user set plugin="mysql_native_password";
flush privileges;
exit;
# 重启mysql服务
service mysql restart如果上面方式不生效,可以检查下数据库是否存在空用户 : https://blog.csdn.net/qq_35180983/article/details/82417448
参考文章
Nginx+PHP+MySQL+phpMyAdmin 环境搭建与使用(12.04.4 LTS)
https://www.cnblogs.com/youcong/p/10703478.html
Centos7安装MySQL
检查是否安装了MySQL
1 | [root@iZ7xv53qbhixo6yuio5ah8Z ~]# rpm -qa | grep mysql |
上面是安装过了的结果,分别是通过rpm和yum的查询方式
直接安装
1 | [root@iZ7xv53qbhixo6yuio5ah8Z ~]# yum install mysql-community-server |
上面报错表示我们没有添加安装包的源信息,需要安装 MySQL rpm 源信息
安装 MySQL rpm 源信息
打开 http://dev.mysql.com/downloads,根据系统版本(cat /etc/redhat-release
)下载对应的安装包。
1 | # 下载rpm安装源 |
再次安装
1 | yum install mysql-community-server |
安装过程中,会提示让我们确认,一律输入 y
按回车即可
检查安装是否成功
1 | [root@iZ7xv53qbhixo6yuio5ah8Z tmp]# rpm -qa | grep mysql |
检查mariaDB是否被覆盖(下面结果未被覆盖)
1 | [root@iZ7xv53qbhixo6yuio5ah8Z tmp]# rpm -qa | grep mariadb |
启动mysql
1 | [root@iZ7xv53qbhixo6yuio5ah8Z ~]# systemctl start mysqld |
发现无法启动,参考《centOS7中启动MySQL数据库提示: Failed to start mysqld.service: Unit not found》文章说是由于Centos7默认不推荐使用mysql,而是采用MariaDB。根据该文说法解决方法有3:
- 用MariaDB代替MySQL
- 用docker安装MySQL(题主方法没有将数据库配置和数据库文件本地化是很危险的,如果误删容器就会导致数据丢失)
- 可能是GPG key检查问题导致包没安装完,试试先导入GPG key再安装mysql,https://dev.mysql.com/doc/refman/5.7/en/checking-rpm-signature.html (未确认)
这里我本打算用方法1,MariaDB代替MySQL。发现安装MySQL后启动MariaDB也会报相同的错误(
systemctl start mariadb.service
),因此重装了下MariaDB,结果发现MySQL又可以访问了,此时再次查询MariaDB就不存在了。猜测是之前安装MySQL没有覆盖掉MariaDB导致
1
2
3 [root@iZ7xv53qbhixo6yuio5ah8Z ~]# yum install -y mariadb-server
[root@iZ7xv53qbhixo6yuio5ah8Z ~]# rpm -qa | grep mariadb
[root@iZ7xv53qbhixo6yuio5ah8Z ~]#
登录和修改密码
1 | # 启动 |
修改root密码语句命令中的
WITH mysql_native_password
是为了解决 Node.js mysql客户端不支持认证协议引发的“ER_NOT_SUPPORTED_AUTH_MODE”问题。最新的mysql模块并未完全支持MySQL 8的“caching_sha2_password”加密方式,而“caching_sha2_password”在MySQL 8中是默认的加密方式。因此,下面的方式命令是默认已经使用了“caching_sha2_password”加密方式,该账号、密码无法在mysql模块中使用。
1
2 mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.12 sec)解决方法是从新修改用户root的密码,并指定mysql模块能够支持的加密方式:
1
2 mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
Query OK, 0 rows affected (0.12 sec)上述语句,显示指定了使用“mysql_native_password”的加密方式。这种方式是在mysql模块能够支持。
原文:https://blog.csdn.net/kkkloveyou/article/details/91623834
开放 root 账户远程登录
1 | # 登录(回车后输入密码,密码输入不可见是正常的) |
设置开机自启
1 | systemctl enable mysqld |
参考文章
CentOS 7为什么放弃了MySQL,而改使用MariaDB?
本文链接: http://www.ionluo.cn/blog/posts/455e7f2h.html
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!