搭建环境:
sudo apt install mariadb-server
设置初始密码:
UPDATE mysql.user SET password = PASSWORD(‘password’) WHERE USER =‘root’;
在shell中会报错:
ERROR 1054 (42S22): Unknown column '‘root’' in 'where clause'
因为单引号不行,在shell中替换成双引号即可:
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 0
修改密码登录方式:
MariaDB [(none)]> update mysql.user set plugin="mysql_native_password" where User="root";
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
更新设置:
MariaDB [(none)]> FLUSH PRIVILEGES;
再次登陆时应为:
mysql -u root -p
建立只读用户:
GRANT SELECT ON *.* TO "username"@"%" IDENTIFIED BY "password";
查看用户所有信息:
MariaDB [(none)]> select *from mysql.user
权限信息:
Select_priv。确定用户是否可以通过SELECT命令选择数据。
Insert_priv。确定用户是否可以通过INSERT命令插入数据。
Update_priv。确定用户是否可以通过UPDATE命令修改现有数据。
Delete_priv。确定用户是否可以通过DELETE命令删除现有数据。
Create_priv。确定用户是否可以创建新的数据库和表。
Drop_priv。确定用户是否可以删除现有数据库和表。
Reload_priv。确定用户是否可以执行刷新和重新加载MySQL所用各种内部缓存的特定命令,包括日志、权限、主机、查询和表。
Shutdown_priv。确定用户是否可以关闭MySQL服务器。在将此权限提供给root账户之外的任何用户时,都应当非常谨慎。
Process_priv。确定用户是否可以通过SHOW
PROCESSLIST命令查看其他用户的进程。
File_priv。确定用户是否可以执行SELECT INTO OUTFILE和LOAD DATA
INFILE命令。
Grant_priv。确定用户是否可以将已经授予给该用户自己的权限再授予其他用户。例如,如果用户可以插入、选择和删除foo数据库中的信息,并且授予了GRANT权限,则该用户就可以将其任何或全部权限授予系统中的任何其他用户。
References_priv。目前只是某些未来功能的占位符;现在没有作用。
Index_priv。确定用户是否可以创建和删除表索引。
Alter_priv。确定用户是否可以重命名和修改表结构。
Show_db_priv。确定用户是否可以查看服务器上所有数据库的名字,包括用户拥有足够访问权限的数据库。可以考虑对所有用户禁用这个权限,除非有特别不可抗拒的原因。
Super_priv。确定用户是否可以执行某些强大的管理功能,例如通过KILL命令删除用户进程,使用SET
GLOBAL修改全局MySQL变量,执行关于复制和日志的各种命令。
Create_tmp_table_priv。确定用户是否可以创建临时表。
Lock_tables_priv。确定用户是否可以使用LOCK
TABLES命令阻止对表的访问/修改。
Execute_priv。确定用户是否可以执行存储过程。
Repl_slave_priv。确定用户是否可以读取用于维护复制数据库环境的二进制日志文件。此用户位于主系统中,有利于主机和客户机之间的通信。
Repl_client_priv。确定用户是否可以确定复制从服务器和主服务器的位置。
Create_view_priv。确定用户是否可以创建视图。
Show_view_priv。确定用户是否可以查看视图或了解视图如何执行。
Create_routine_priv。确定用户是否可以更改或放弃存储过程和函数。
Alter_routine_priv。确定用户是否可以修改或删除存储函数及函数。
Create_user_priv。确定用户是否可以执行CREATE
USER命令,这个命令用于创建新的MySQL账户。
Event_priv。确定用户能否创建、修改和删除事件。
Trigger_priv。确定用户能否创建和删除触发器。
创建数据库有两种方式:
create database 数据库名;
create database 数据库名 character set 字符集;
建立好数据库之后,应该选择数据库,在该数据库下进行操作
show databases; //显示出所有的数据库
select database(); //查看当前选择的数据库
use 数据库名 //选择要操作的数据库 ,会提示Database changed
创立数据表:
create table 表名(
字段名 类型(长度) 约束,
字段名 类型(长度) 约束
);
增删改:
增加列:
alter table tableName add columnName varchar(30)
修改列类型:
alter table tableName alter column columnName varchar(4000)
修改列名称:
EXEC sp_rename 'tableName.column1' , 'column2' (把表名为tableName的column1列名修改为column2)
删除列:
alter table tableName drop column columnName
修改列长度:
alter table 表名 modify column 字段名 varchar(数量);
插入数据:
insert into 表名 (列名1,列名2,列名3..) values (值1,值2,值3..); -- 向表中插入某些列
insert into 表名 values (值1,值2,值3..); --向表中插入所有列
插入数据时注意单引号。这点是非常坑的,一直报错,Unknown column '' in 'field list',数了半天数据个数和列个数都一直都是一样的,然而就是插不进去,原来是英文的单引号打成了中文的单引号,不仔细看还真是看不出来。
更新数据:
update 表名 set 字段名 = '***' where 字段名 = '**';
查看数据表结构和列出所有数据表名称:
desc 表名;
show tables;
查看数据表全部内容:
select *from 表名;
删除整个数据表、删除整个表的数据:
drop table xxxxxx;
truncate table xxxxxx;
查找部分数据和删除部分数据
select *from 表名 where 字段名 >= '' and 字段名 <= '';
delete from 表名 where 字段名 >= '' and 字段名 <= '';
将csv文件导入数据库:
load data infile "/home/name.csv" into table tablename character utf8 gbk fields terminated by "," lines terminated by '\r\n';
如果中文出现乱码的话是编码的问题,可以将命令里边的utf8改成gbk。
删除表内的数据:
delete from tablename;
撤销用户权限:
REVOKE ALL ON *.* FROM "username"@"%";
数据库日志参考
数据库日志详解