V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
nonozone
V2EX  ›  问与答

为啥我 debian8 安装 MariaDB,没有提示输入 root 的密码?

  •  
  •   nonozone · Jul 21, 2017 · 5725 views
    This topic created in 3210 days ago, the information mentioned may be changed or developed.
    現在让我很迷茫啊,mysqladmin 改的密码貌似也没用。
    12 replies    2017-07-24 18:11:57 +08:00
    evilnull
        1
    evilnull  
       Jul 21, 2017
    MariaDB root 账户默认使用了 UNIX_SOCKET 插件,只允许 root 用户连接,无需密码。
    可以使用 root 用户连接后创建新用户或者执行:
    update mysql.user set plugin = ''where User='root';
    flush privileges;
    or
    update mysql.user set plugin = 'mysql_native_password' where User='root';
    flush privileges;
    jarlyyn
        2
    jarlyyn  
       Jul 21, 2017
    楼上……………………

    大部分发行版安装好 mysql 不都是跑一遍 mysql_secure_installation 么?
    evilnull
        3
    evilnull  
       Jul 21, 2017
    @jarlyyn 对于 mysql 来说是的,但是对于默认启动了 UNIX_SOCKET 插件的 MariaDB,即使执行了
    mysql_secure_installation 仍然需要使用 root 用户才能连接 MariaDB root 账户,而且无需密码。
    jarlyyn
        4
    jarlyyn  
       Jul 21, 2017
    @evilnull

    你这一本正经的胡说八道把我说的一愣一愣的

    随便找了个闲置阿里云服务器重灌了 debian 8 测试了下。





    jarlyyn
        5
    jarlyyn  
       Jul 21, 2017
    第三张图发错,是非 root 用户登录 root 帐号的

    jarlyyn
        6
    jarlyyn  
       Jul 21, 2017
    另外,再来张指定 socket 文件链接的 3 种登录状况的图

    jarlyyn
        8
    jarlyyn  
       Jul 21, 2017 via Android
    @hcymk2

    Debian 9 都出来了 Debian 8 源里的软件能有多新……
    evilnull
        9
    evilnull  
       Jul 21, 2017
    @hcymk2 我确实是按照 Debian9 中的 MariaDB 说的,刚安装了 Debian8 stable 测试,从源中安装 MariaDB 是会提示输入 root 密码的,而且确实没有使用 UNIX_SOCKET 插件,而楼主说没有提示输入 root 的密码。
    在文档 https://mariadb.com/kb/en/mariadb/unix_socket-authentication-plugin/ 里提到 “ The UNIX_SOCKET plugin is installed by default in new installs of Ubuntu 15.10 and later, and Debian testing.” 或许楼主是 Debian testing 吧。
    Showfom
        10
    Showfom  
    PRO
       Jul 21, 2017
    所以我推薦用 Percona Server
    evilnull
        11
    evilnull  
       Jul 21, 2017
    @hcymk2 上一条 at 错了,抱歉
    @jarlyyn 我确实是按照 Debian9 中的 MariaDB 说的,刚安装了 Debian8 stable 测试,从源中安装 MariaDB 是会提示输入 root 密码的,而且确实没有使用 UNIX_SOCKET 插件,而楼主说没有提示输入 root 的密码。
    在文档 https://mariadb.com/kb/en/mariadb/unix_socket-authentication-plugin 里提到 “ The UNIX_SOCKET plugin is installed by default in new installs of Ubuntu 15.10 and later, and Debian testing.” 或许楼主是 Debian testing 吧。
    nonozone
        12
    nonozone  
    OP
       Jul 24, 2017   ❤️ 1
    安装完 MariaDB 之后,运行 mysql_secure_installation,其中有个选项就可以修改 root 密码了 。
    但是此时,用 phpmyadmin 或者 adminer 访问的時候,还是会提示
    Access denied for user 'root'@'localhost'
    这个时候
    sudo mysql -u root
    use mysql;
    update user set plugin='' where User='root';
    flush privileges;
    exit;

    这样就 OK 了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   921 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 18:32 · PVG 02:32 · LAX 11:32 · JFK 14:32
    ♥ Do have faith in what you're doing.