当前位置:   article > 正文

ubuntu 安装与使用mysql_ubuntu下使用mysql

ubuntu下使用mysql

常用命令

  1. #安装MySQL服务器
  2. apt-get install mysql-server
  3. #按照MySQL客户端
  4. apt-get install mysql-client
  5. #启动MySQL数据库服务
  6. service mysql start
  7. systemctl start mysql.service
  8. #重启MySQL数据库服务
  9. service mysql restart
  10. systemctl restart mysql.service
  11. #停止MySQL数据库服务
  12. service mysql stop
  13. systemctl stop mysql.service
  14. #查看MySQL运行状态
  15. service mysql status
  16. systemctl status mysql.service
  17. #设置MySQL服务开机自启动
  18. systemctl enable mysql.service
  19. #停止MySQL服务开机自启动
  20. systemctl disable mysql.service

MySQL的配置文件

配置文件位置:/etc/mysql/mysql.conf.d/mysqld.cnf

配置MySQL远程登录

需要配置绑定地址来控制是否允许远程登录,我一般会将bind-address配置为 0.0.0.0,除此之外,还要注意远程登录的用户host字段不能是localhost,通常设置为%。另外用户远程登录,需要注意配置防火墙允许数据库默认端口3306的访问。

 配置启用存储过程或函数

mysql默认用户不得创建或修改存储函数,可以通过配置文件配置如下参数来启用:

log_bin_trust_function_creators = 1 

root用户登录

MySQL会默认创建root用户,且没有设置密码,但是该用户需要用操作系统的root用户来登录才行。用其他用户登录会被拒绝。

使用其他用户失败的登录:

  1. [sams@pobosrv:/var/log]$ mysql -u root -p
  2. Enter password:
  3. ERROR 1698 (28000): Access denied for user 'root'@'localhost'

使用root用户成功登录:

  1. [root@pobosrv:~]$ mysql -u root
  2. Welcome to the MySQL monitor. Commands end with ; or \g.
  3. Your MySQL connection id is 19
  4. Server version: 8.0.35-0ubuntu0.20.04.1 (Ubuntu)
  5. Copyright (c) 2000, 2023, Oracle and/or its affiliates.
  6. Oracle is a registered trademark of Oracle Corporation and/or its
  7. affiliates. Other names may be trademarks of their respective
  8. owners.
  9. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  10. mysql>

MySQL创建用户与授权

使用root用户登录

  1. # 登录mysql并输入密码
  2. mysql -u root -p
  3. # mysql8 修改密码方式
  4. alter user 'root'@'localhost' identified by '这里填你要的密码';

另注:在root初始密码为空时,设置密码始终失败。这里解决方式是,先创建另外一个用户比如说test,然后给test所有权限,这时可以通过navicat使用test用户登录,然后修改root用户的插件为:caching_sha2_password,并设置密码。

  1. mysql> CREATE USER 'test'@'%' IDENTIFIED BY 'test';
  2. mysql> GRANT ALL PRIVILEGES ON *.* TO 'test'@'%';

无需重启数据库即可生效(且mariadb自动会被替换,不再生效)

创建用户

CREATE USER 'username'@'host' IDENTIFIED BY 'password';

username:你将创建的用户名

host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%

password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器

注意,使用%通配符创建外网访问用户后,登录时需要明确访问的IP地址,例如

mysql -u test -h 115.28.203.224 -p

设置与更改用户密码

ALTER USER 'username'@'host' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;  

删除用户

DROPUSER'username'@'host';

查看用户信息

查询用户表

  1. SELECT User, Host FROM mysql.user;
  2. +------------------+-----------+
  3. | User | Host |
  4. +------------------+-----------+
  5. | diming | % |
  6. | debian-sys-maint | localhost |
  7. | mysql.session | localhost |
  8. | mysql.sys | localhost |
  9. | root | localhost |
  10. +------------------+-----------+
  11. 5 rows in set (0.00 sec)
  12. ————————————————

查看用户权限

show grants for'username'@'host';

用户授权

GRANT privileges ON databasename.tablename TO 'username'@'host';

privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL

databasename:数据库名

tablename:表名

如果要授予该用户对所有数据库和表的相应操作权限则可用*表示,如*.*

注意:用以上命令授权的用户不能给其它用户授权,如果想让被授权的用户可以将他的拥有的权限授给其他用户,用以下命令

  1. #指定表
  2. grant privileges on databasename.tablename TO 'username'@'host' with grant option;
  3. #所有表
  4. grant all privileges on *.* to 'username'@'host' with grant option;

刷新授权

flush privileges;

这一步一定要做,不然无法成功!这句表示从mysql数据库的grant表中重新加载权限数据,因为MySQL把权限都放在了cache中,所以在做完更改后需要重新加载。

例子

  1. GRANT SELECT, INSERT privileges ON test.user TO 'pig'@'%';
  2. GRANT ALL privileges ON *.* TO 'pig'@'%';
  3. GRANT ALL privileges ON maindataplus.* TO 'pig'@'%';

撤销用户权限

REVOKE privileges ON databasename.tablename FROM 'username'@'host';

privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL

databasename:数据库名

tablename:表名

如果要授予该用户对所有数据库和表的相应操作权限则可用*表示,如*.*

例子

REVOKE SELECT privileges ON *.* FROM 'pig'@'%';

注意

假如你在给用户'pig'@'%'授权的时候是这样的(或类似的):GRANT SELECT ON test.user TO 'pig'@'%',则在使用REVOKE SELECT ON *.* FROM 'pig'@'%';命令并不能撤销该用户对test数据库中user表的SELECT 操作。

相反,如果授权使用的是GRANT SELECT ON *.* TO 'pig'@'%';则REVOKE SELECT ON test.user FROM 'pig'@'%';命令也不能撤销该用户对test数据库中user表的Select权限。

具体信息可以用命令SHOW GRANTS FOR 'pig'@'%'; 查看。

查看加密的规则

select Host,User,plugin from mysql.user;

修改加密方式

ALTER USER 'username'@'host' IDENTIFIED WITH mysql_native_password BY 'password';

数据库常用命令

  1. #创建数据库
  2. CREATE DATABASE 数据库名;
  3. #​​​​​​​删除数据库
  4. DROP DATABASE 数据库名称;
  5. #查看显示所有数据库
  6. show databases;
  7. #查看当前使用的数据库
  8. select database();
  9. #查看数据库使用端口
  10. show variables like 'port';
  11. #查看数据库的表信息
  12. show tables;
  13. #查看表结构
  14. show columns from table_name;
  15. #或
  16. describe table_name;
  17. #查看表生成的DDL
  18. show create table table_name;
  19. #DDL(data definition language)数据库定义语言:其实就是我们在创建表的时候用到的一些sql,比如说:CREATEALTERDROP等。DDL主要是用在定义或改变表的结构,数据类型,表之间的链接和约束等初始化。
  20. #该命令把创建表的DDL,表结构、类型,外键,备注等全部显示出来。

查看Mysql数据库信息

进入information_schema 数据库(存放了其他的数据库的信息)

  1. #查询所有数据的大小
  2. select concat(round(sum(data_length/1024/1024),2),'MB') as data from information_schema.tables;
  3. #查看指定数据库的大小
  4. select concat(round(sum(data_length/1024/1024),2),'MB') as data from information_schema.tables where table_schema='数据库名称';
  5. #查看指定数据库的某个表的大小
  6. select concat(round(sum(data_length/1024/1024),2),'MB') as data from information_schema.tables where table_schema='数据库名称' and table_name='表名称';
  7. #查看索引所占的空间大小
  8. select concat(round(sum(index_length/1024/1024),2),'MB') as data from information_schema.tables where table_schema='mysql';

查看数据库参数连接等信息

  1. #查看数据文件存放路径
  2. show variables like '%datadir%';
  3. #查看数据库编码
  4. show variables like 'character%';
  5. +--------------------------+----------------------------+
  6. | Variable_name | Value |
  7. +--------------------------+----------------------------+
  8. | character_set_client | utf8 |
  9. | character_set_connection | utf8 |
  10. | character_set_database | utf8 |
  11. | character_set_filesystem | binary |
  12. | character_set_results | utf8 |
  13. | character_set_server | latin1 |
  14. | character_set_system | utf8 |
  15. | character_sets_dir | /usr/share/mysql/charsets/ |
  16. +--------------------------+----------------------------+
  17. 8 rows in set (0.00 sec)
  18. #character_set_client 为客户端编码方式;
  19. #character_set_connection 为建立连接使用的编码;
  20. #character_set_database 为数据库的编码;
  21. #character_set_results 为结果集的编码;
  22. #character_set_server 为数据库服务器的编码;
  23. #查看数据库的最大连接数
  24. show variables like '%max_connections%';
  25. #查看数据库当前连接数,并发数
  26. show status like 'Threads%';
  27. +-------------------+-------+
  28. | Variable_name | Value |
  29. +-------------------+-------+
  30. | Threads_cached | 0 |
  31. | Threads_connected | 27 |
  32. | Threads_created | 48 |
  33. | Threads_running | 1 |
  34. +-------------------+-------+
  35. 4 rows in set (0.00 sec)
  36. #Threads_cached 代表当前此时此刻线程缓存中有多少空闲线程。
  37. #Threads_connected 代表当前已建立连接的数量,因为一个连接就需要一个线程,所以也可以看成当前被使用的线程数。
  38. #Threads_created 代表从最近一次服务启动,已创建线程的数量。
  39. #Threads_running 代表当前激活的(非睡眠状态)线程数。并不是代表正在使用的线程数,有时候连接已建立,但是连接处于sleep状态,这里相对应的线程也是sleep状态。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/978543
推荐阅读
相关标签
  

闽ICP备14008679号