###服务命令
systemctl start mysql #启动服务,或systemctl start mariadb
systemctl enable mysql #设置开机启动
###修改mariadb账户root密码(默认情况下,新安装的 mariadb 的密码为空,在shell终端直接输入 mysql 就能登陆数据库。)
#如果是刚安装第一次使用,shell命令行使用此命令初始化。
mysql_secure_installation
#知道root密码而需要修改,直接在shell命令行使用 mysqladm 命令修改。这种方法的弊端在于会明文显示密码。
mysqladmin -uroot -p[oldpassword] password newpassword
#登陆数据库修改密码
mysql -uroot -p
use mysql;
select host,user,plugin,authentication_string from mysql.user; #查看数据库用户信息
UPDATE user SET password=password('newpassword') WHERE user='root'; #修改密码
UPDATE user SET authentication_string=PASSWORD('newpassword') where USER='root'; #新版MySQL采用此SQL
ALTER USER 'root'@'127.0.0.1' IDENTIFIED WITH mysql_native_password BY '12345'; #修改密码
flush privileges;
exit;
#使用 set 指令设置root密码
mysql -uroot -p
SET password for 'root'@'localhost'=password('newpassword');
exit;
#如果是忘记了 root 密码,则需要以跳过授权的方式启动 mariadb 来修改密码。
systemctl stop mariadb #先停掉服务。
mysqld_safe --skip-grant-tables & #使用跳过授权的方式启动 mariadb。
#修改密码;更新密码后,在跳过授权启动时也不能空密码直接登陆了;关闭跳过授权启动的进程;
systemctl start mariadb #正常启动 mariadb
###MariaDB修改密码不生效
#用mysql_secure_installation命令设置Root密码,然后用工具登录发现提示 Access denied for user ‘root’@‘localhost’;而在命令行你发现直接用mysql就可以登录数据库,完全不用密码。
#原因:Mariadb在5.2.0以后的版本默认不再使用密码认证了,改用Authentication Plugin - Unix Socket插件认证。而Unix Socke插件认证直接忽略密码。
#解决办法,登录修改插件
use mysql;
update mysql.user set plugin='mysql_native_password' where User='root';
flush privileges;