phpmyadmin用root用户登录 MariaDB 10.1.26 (mysql 5.7) 失败

By | 2020年11月19日

phpmyadmin用root用户登录 MariaDB 10.1.26 (mysql 5.7) 失败

环境:Debian 9.4, MariaDB 10.1.26 或 mysql 5.7, phpmyamdin 4.8

过程:

  1. 在Debian系统里安装好 nginx + php7.0 + MariaDB 的环境,放置一份 phpmyadmin 尝试登录
  2. 用 MariaDB 的root用户和密码登录,失败,提示:
    mysql-1.png>mysqli_real_connect(): (HY000/1698): Access denied for user 'root'@'localhost'>mysqli_real_connect(): (HY000/1698): Access denied for user 'root'@'localhost'
  3. 搜索得,如 mysql 5.7 版本后,默认不允许root用户从如phpmyadmin登录
  4. 可在服务器里通过mysql,创建一个有完全权限的新用户,如果是生产环境,建议仅授权指定数据库的权限:
    mysql-4.png`CREATE USER 'idbadm'@'localhost' IDENTIFIED BY 'meizi36829';` `GRANT ALL PRIVILEGES ON *.* TO 'idbadm'@'localhost' WITH GRANT OPTION;` `FLUSH PRIVILEGES;`
  5. 用新建用户的信息(登录名idbadm,密码meizi36829),再次登录phpmyadmin,成功
    mysql-5.png

参考:

标签: phpmyadmin

2 thoughts on “phpmyadmin用root用户登录 MariaDB 10.1.26 (mysql 5.7) 失败

  1. junchol Post author

    教你删除MySQL/MariaDB用户帐户的方法

    2019-08-24 15:02:55作者:曾秀珠稿源:云网牛站

    MySQL允许你创建多个用户帐户并授予适当的权限,以便用户可以连接和管理数据库,如果不再需要用户帐户,则最好删除用户权限或完全删除用户帐户。本文介绍如何删除MySQL/MariaDB用户帐户的方法。安装请参考如何在Ubuntu上安装MySQL/MariaDB在Ubuntu 18.04/18.10系统上安装MariaDB 10.3.13稳定版本

    https://ywnz.com/uploads/allimg/19/1-1ZR415022C54.JPG

     
    DROP USER声明
    在MySQL中,你可以使用DROP USER语句删除一个或多个用户并分配权限,该语句的一般语法如下:
    DROP USER [IF EXISTS] USER_ACCOUNT [, USER_ACCOUNT] …
    例如,要删除brian@localhost用户帐户登录到MYSQL shell并运行:
    DROP USER ‘brian@localhost’;
    成功后,命令将返回:
    Query OK, 0 rows affected (0.00 sec)
    要在单个命令中删除多个用户帐户,请运行DROP USER语句,然后运行要按空格分隔的要删除的用户:
    DROP USER ‘brian@localhost’ ‘any@localhost’;
    如果你尝试删除不存在的用户帐户并且未使用IF EXISTS子句,则该命令将返回错误。如果你尝试删除的用户当前已登录,则不会关闭用户会话,并且用户将能够运行查询,直到会话结束,会话关闭后,用户将被删除,它将无法再登录MySQL服务器。不会自动删除用户创建的数据库和对象。
     
    删除MySQL用户帐户(适用MariaDB)
    下面具体说明如何列出和删除MySQL用户帐户。
    首先,使用root或其他管理用户登录MySQL shell,为此,请键入以下命令:
    sudo mysql
    如果你使用旧的本机MySQL身份验证插件以root身份登录,请运行以下命令并在出现提示时输入密码:
    mysql -u root -p
    以下命令在MySQL shell中执行。
    MySQL在mysql数据库的用户表中存储有关用户的信息,使用以下SELECT语句获取所有MySQL用户帐户的列表:
    mysql> SELECT User, Host FROM mysql.user;
    输出应该如下所示:

    https://ywnz.com/uploads/allimg/19/1-1ZR4150234933.JPG

    注:在MySQL中,用户帐户由用户名和主机名部分组成,jabba@localhost和jabba@10.10.8.8是不同的用户帐户。
    假设不再需要chewbacca@localhost用户帐户,我们希望将其删除。
    要删除用户运行:
    mysql> DROP USER ‘chewbacca’@’localhost’
    成功后,命令将返回:
    Query OK, 0 rows affected (0.00 sec)
    该命令将删除用户帐户及其权限,至此,现在用户已被成功删除。
     
    结论
    要删除MySQL用户帐户,请使用DROP USER语句,后跟要删除的用户的名称。
     
    相关主题
    在Ubuntu18.04系统下彻底删除MySQL的方法

    Reply
  2. junchol Post author

    默认情况下,新安装的 mariadb 的密码为空,在shell终端直接输入 mysql 就能登陆数据库。
    如果是刚安装第一次使用,请使用 mysql_secure_installation 命令初始化。

    # mysql_secure_installation
    
     
    
    NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
    
          SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
    
     
    
    In order to log into MariaDB to secure it, we'll need the current
    
    password for the root user.  If you've just installed MariaDB, and
    
    you haven't set the root password yet, the password will be blank,
    
    so you should just press enter here.
    
     
    
    Enter current password for root (enter for none):
    
    OK, successfully used password, moving on...
    
     
    
    Setting the root password ensures that nobody can log into the MariaDB
    
    root user without the proper authorisation.
    
     
    
    Set root password? [Y/n] y
    
    New password:
    
    Re-enter new password:
    
    Password updated successfully!
    
    Reloading privilege tables..
    
     ... Success!
    
     
    
     
    
    By default, a MariaDB installation has an anonymous user, allowing anyone
    
    to log into MariaDB 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? [Y/n] 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? [Y/n] y
    
     ... Success!
    
     
    
    By default, MariaDB 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? [Y/n] y
    
     - 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? [Y/n] y
    
     ... Success!
    
     
    
    Cleaning up...
    
     
    
    All done!  If you've completed all of the above steps, your MariaDB
    
    installation should now be secure.
    
     
    
    Thanks for using MariaDB!
    

    这里针对的是知道 root 密码,而需要修改的情况。
    两种修改方法:
    1、直接在shell命令行使用 mysqladm 命令修改。

    # mysqladmin -uroot -poldpassword password newpassword
    
     
    
    这种方法的弊端在于会明文显示密码。
    

    2、登陆数据库修改密码。

    # mysql -uroot -p
    
     
    
    2.1 更新 mysql 库中 user 表的字段:
    
    MariaDB [(none)]> use mysql;  
    
    MariaDB [mysql]> UPDATE user SET password=password('newpassword') WHERE user='root';  
    
    MariaDB [mysql]> flush privileges;  
    
    MariaDB [mysql]> exit;
    
     
    
    2.2 或者,使用 set 指令设置root密码:
    
    MariaDB [(none)]> SET password for 'root'@'localhost'=password('newpassword');  
    
    MariaDB [(none)]> exit; 
    

    如果是忘记了 root 密码,则需要以跳过授权的方式启动 mariadb 来修改密码。
    1、先停掉服务。

    # systemctl stop mariadb
    

    2、使用跳过授权的方式启动 mariadb。

    # mysqld_safe --skip-grant-tables &
    
    [1] 1441
    
    [root@centos7 ~]# 170531 02:10:28 mysqld_safe Logging to '/var/log/mariadb/mariadb.log'.
    
    170531 02:10:28 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
    
     
    
    # ps -ef | grep 1441
    
    root      1441   966  0 02:10 pts/0    00:00:00 /bin/sh /usr/bin/mysqld_safe --skip-grant-tables
    
    mysql     1584  1441  0 02:10 pts/0    00:00:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --skip-grant-tables --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/var/lib/mysql/mysql.sock
    

    3、当跳过授权启动时,可以不需要密码直接登陆数据库。登陆更新密码即可。

    # mysql
    
    MariaDB [(none)]> use mysql;  
    
    MariaDB [mysql]> UPDATE user SET password=password('newpassword') WHERE user='root';  
    
    MariaDB [mysql]> flush privileges;   
    
    MariaDB [mysql]> exit; 
    
     
    
    更新密码后,在跳过授权启动时也不能空密码直接登陆了。
    

    4、关闭跳过授权启动的进程:

    # kill -9 1441 
    

    5、正常启动 mariadb:

    # systemctl start 
    
    Reply

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注