MySQL | MariaDB命令行客户端常用操作

连接与断开数据库

连接数据库

语法:

$ mysql -h [localhost | IP] -P [port] -u [username] -p [password]

例如:连接本机 ,端口为3306,用户名为root,密码为:123456,命令为:

$ mysql -u root -p

执行后会提示输入密码,此时输入正确密码,成功登陆会出现MariaDB命令行提示符。
在MariaDB服务器登录时可省略-h参数,端口为默认3306端口时可省略-P参数。

断开数据库

执行命令:

$ quit

$ exit

成功断开数据库连接,退出客户端操作命令行。

密码维护

通常默认的root用户在本机登录时没有密码的,况且我们也会有修改其他用户密码的需求。

使用update语句修改密码

由于我们的数据库用户,统一存在mysql库的user表中。所以我们使用一下命令更新用户密码。
语法:

$ update mysql.user set password = password('newpassword') where user = 'username';

例如:

$ update mysql.user set password = password('123456') where user = 'root';

以上语句将root用户的密码修改为123456。

忘记root用户密码的处理

当我们忘记root密码时,意味着我们最高权限的管理用户不可用了。

  1. 此时我们需要在/etc/my.cnf文件中添加这样一行内容。
$ vim /etc/my.cnf
  1. 在[mysqld]下添加,skip-grant-tables。
[mysqld]
skip-grant-tables

3.使用update语句修改密码,重新登录即可(如果不能使用新密码登录,重启MariaDB服务)

常用配置

核心配置文件my.cnf

在此,我将简要说明常用的基本配置,后期我会通过一片单独的文章说明my.cnf的配置及调优。

  1. [client]
    port = 端口,配置MariaDB的端口。
  2. [mysqld]
    skip-grant-tables,此配置意为,忽略权限表。
    basedir = 绝对路径,配置MariaDB安装目录的绝对路径。
    datadir = 绝对路径,配置MariaDB安装数据文件存储的绝对路径。
    tmpdir = 绝对路径,配置MariaDB零时文件储存的绝对路径。

乱码问题

权限及用户管理

MySQL与MariaDB同其他RDBMS略有不同,连接数据库服务器,不仅使用用户名称外,用户连接数据库服务器的客户端而是连接认证的一部分。

一般不允许使用管理员账户远程连接数据库,及默认的root用户。该用户一般权限为最大,考虑安全因素,我们通常只会赋予root用户数据库服务器所在机器的本地连接访问权限。

MariaDB的账户识别

MariaDB的用户账号不仅包含用户名,还包含客户端连接点的主机名、域名、IP地址。这个两个重要元素组成了账户。

数据库的账户与访问主机的主机名、域名、IP地址组成了账户,账户与主机相关信息均需要分别用单引好(’)区分开。

账号语法:
‘db_id’@’HOSTNAME | 域名 |IP’
其语法以用户名开始,@作为分割符,最后是用户连接MariaDB服务器的客户端连接主机信息。

例如,root用户按一下注册,将只有在DB服务器本地可连接MariaDB服务器,外部其他服务器均无法连接。
‘root’@’127.0.0.1’

例如,需要所有外部主机连接,只需要将连接MariaDB服务器的客户端连接主机部分修改为’%’。
‘root’@’%’

MariaDB重复账号说明

我们假设的场景是这样的,有两个名为test的用户名,密码分别为123和456,一个连接客户端服务器的IP为192.168.1.100,另一个我赋予了所有机器均可连接。

例如,我像下面这样配置了账号。

‘test’@’192.168.1.100’ (该账号密码为123)

‘test’@’%’ (该账号密码为456)

现在来说明下,连接成功与否的问题。其实连接成功与否完全取决于我使用第一个还是第二个账号登录的问题。
MariaDB的重复账号选用原则是,总是选择范围小的。’test’@’192.168.1.100’的范围小于’test’@’%’,因此如果我在192.168.1.100客户端服务器上,使用’test’@’%’账号的密码456进行连接。会因为总是选择账号选择范围小的原则,匹配’test’@’192.168.1.100’ 账号的密码应该为123,与我使用的连接密码456不匹配到时连接失败。

权限

MariaDB存在多种权限(Privileges),从10.0版本开始,用户可以创建权限组(Role),并将其赋予某种特定用户,一个权限组包含多个权限。

根据MariaDB的权限作用范围,可以将权限分为服务器级权限、数据库级权限、表级权限、存储程序先关权限、列级权限(不常用,故省略说明)

利用GRANT命令使用权限,ON子句用于指定数据库对象。

数据库对象说明

  1. .
    该对象为整个MariaDB服务器,privileges_list(权限列表)中只能用全局权限。
  2. db.
    该对象为某个特定数据库,privileges_list(权限列表)中可以出现除全局权限外的数据库级、表级、存储程序级权限。
  3. db.table
    该对象为某个数据库的一个表,privileges_list(权限列表)中只能使用表级权限。
  4. db.stored_program
    该对象为某个数据库的一个存储程序,privileges_list(权限列表)中只能使用存储程序级别的权限。

赋予权限

语法:

$ GRANT [privileges_list] ON [数据库对象] TO 'db_id'@'HOSTNAME | 域名 |IP';
$ GRANT [privileges_list] ON [数据库对象] TO 'db_id'@'HOSTNAME | 域名 |IP' IDENTIFIED BY 'password' WITH GRANT OPTION;

GRANT语句为某个特定用户分配权限,如果用户不存在,则会先创建用户,然后再赋予权限。所以GRANT语句具有创建用户同时分配权限的作用。

privileges_list,指定一个或多个权限,指定多个权限时使用都好(,)进行分隔。

ON关键字,指定给那个数据库对象授予权限。

TO关键字,指定获得权限的用户。

IDENTIFIED BY子句,用于给创建的用户赋予密码的作用。

末尾的WITH GRANT OPTION子句,指定用户可以为其他用户授权的权限。

刷新权限设置

在配置或创建新的用户权限后,通常都会执行刷新命令让权限立即生效。命令如下:

$ FLUSH PRIVILEGES;
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值