安装 Mysql 大部分系统常用源中包含mysql,直接使用自带的包管理工具安装
即可,对于源中无法找到mysql的系统可以访问官网 获取
安装方法
1 $ sudo zypper install mysql-server mysql-client
CentOS7 CentOS7的常用源中即不含mysql,安装mysql则需要添加mysql源,
同样在官网 中找到添加方式:
下载 的是RPM源rpm包
$ sudo yum localintall
安装后即添加源
使用yum直接安装mysql,需要注意的是默认情况下只有最新版本
mysql源是enabled,其他版本的需要--enablerepo
指定或者
/etc/yum.repo.d
下修改文件
Mariadb mariadb和mysql大部分兼容,添加了一些新的特性,是mysql的一个
开源分支,由mysql的作者维护,避免mysql在被Oracle收购后闭源。
大部分情况下,mariadb可以完全看作是mysql
甚至在某些系统中,mariadb服务有别名mysql
mariadb控制台命令也是mysql
配置 配置文件
数据位置
数据库存放数据位置:/var/lib/mysql/db_name/
Mysql-Client 登陆 @todo
一个问题,我安装的mariadb,默认的root用户无法在一般用户账户
登陆,必须sudo才能正常登陆
参数登陆 1 $ mysql -h host -P port -u user -p
mysql不带参数启动则是默认cur_user_name@localhost:3306
,
表示使用当前用户名作为用户名登陆,如果该用户设置密码,-p
参数不能省略
文件 1 $ mysql --defaults-file=file_name
文件内容格式类似于配置文件
1 2 3 4 5 [client] host =user =password =database =(可选)
注意
mysql中默认存在一个用户名为空的账户,只要在本地,可以
不用账户、密码登陆mysql,因为这个账号存在,使用新建用户
无法通过密码登陆,需要在1 2 3 $ use mysql; $ delete from user where User = ""; $ flush privileges;
Mysql交互命令 Show信息类
SHOW DATABASES
:列出MySQLServer数据库。
SHOW TABLES [FROM db_name]
:列出数据库数据表。
SHOW TABLE STATUS [FROM db_name]
:列出数据表及表状态信息。
SHOW COLUMNS FROM tbl_name [FROM db_name]
:列出资料表字段
SHOW FIELDS FROM tbl_name [FROM db_name]
DESCRIBE tbl_name [col_name]
SHOW FULL COLUMNS FROM tbl_name [FROM db_name]
:列出字段及详情
SHOW FULL FIELDS FROM tbl_name [FROM db_name]
:列出字段完整属性
SHOW INDEX FROM tbl_name [FROM db_name]
:列出表索引
SHOW STATUS
:列出 DB Server 状态
SHOW VARIABLES [like pattern]
:列出 MySQL 系统环境变量
SHOW PROCESSLIST
:列出执行命令。
SHOW GRANTS FOR user
:列出某用户权限
User
CREATE USER 'USER_NAME'@'ADDRESS' IDENTIFIED BY 'PASSWORD'
IDENTIFIED BY PASSWORD
这个语法好像已经被丢弃了
SET PASSWORD FOR 'USER_NAME'@'ADDRESS' = PASSWORD('NEW_PWD')
SET PASSWORD = PASSWORD('NEW_PWD')
:修改当前用户密码
GRANT PRIVILEGES ON DB_NAME.TBL_NAME TO 'USER_NAME'@'ADDRESS'
[WITH GRANT OPTION]
REVOKE PRIVILIEGES ON DB_NAME.TBL_NAME TO 'USER_NAME'@'ADDRES%'
DROP 'USER_NAME'@'ADDRESS'
说明
Priviledges
名称
权限
alter
alter table
alter routine
alter or drop routines
create
create table
create routine
create routine
create temporary table
create temporary table
create user
create, drop, rename users and revoke all privilieges
create view
create view
delete
delete
drop
drop table
execute
run stored routines
file
select info outfile and load data infile
index
create index and drop index
insert
insert
lock tables
lock tables on tables for which select is granted
process
show full processlist
reload
use flush
replicati on client
ask where slave or master server are
replicati on slave
select
select
show databases
show databases
show view
show view
shutdown
use mysqladmin shutdown
super
change master, kill, purge master logs,
set global sql statements, use mysqladmin
debug command, create an extra connection
even reach the maximum amount|
|update|update|
|usage|connect without any specific priviliege|
执行Sql脚本
shell内执行
1 mysql -h host -D db_name -u user -p < file_name.sql;
mysql命令行执行
导入、导出数据 导入数据
shell内
mysql命令行内
1 2 3 4 5 load data [local ] infile '/path/to/file' into table tbl_name fields terminated by 'sep_char' optionally enclosed by 'closure_char' escaped by 'esc_char' lines terminated by `\r\n`;
若/path/to/file
不是绝对路径,则被认为是相对于当前
数据库存储数据目录的相对路径,而不是当前目录
关键字local
表示从客户端主机导入数据,否则从服务器
导入数据
导出数据
注意 :远程登陆mysql时,两种方式导出数据不同,shell导出
数据可以导出至client,而mysql命令行内导出至server
Mysql-Server 数据库字符编码方式 查看
只查看数据库编码 方式
1 show variables like "character_set_database;
查看数据库相关的编码 方式
1 show variables like "character%";
|variable_name|value|
|——-|——-|
|character_set_client|latin1|
|character_set_connection|latin1|
|character_set_database|latin1|
|character_set_filesystem|binary|
|character_set_results|latin1|
|character_set_server|latin1|
|character_set_system|utf8|
|character_sets_dir|/usr/share/mysql/charsets/|
另一种查询数据库编码方式
1 show variables like "collation%";
|Variable_name|Value|
|——-|——-|
|collation_connection|utf8mb4_general_ci|
|collation_database|utf8mb4_general_ci|
|collation_server|utf8mb4_general_ci|
相关变量说明
character_set_client
:客户端编码方式
character_set_connection
:建立连接是所用编码
character_set_database
:数据库编码
character_set_results
:结果集编码
character_set_server
:服务器编码
保证以上编码方式相同则不会出现乱码问题,还需要注意其他连接
数据库的方式不一定同此编码方式,可能需要额外指定
修改编码方式 修改数据库默认编码方式 修改mysql配置文件(/etc/mysql/my.cnf
)
#todo
mysql配置文件的优先级
utf8mb4意义
1 2 3 4 5 [client] default-character-set =utf8mb4[mysqld] default-character-set =utf8mb4init_connect ="SET NAMES utf8mb4"
重启mysql即可
修改单个数据库
创建时1 create database db_name character set utf8 collate utf8_general_ci;
1 create database if not exists db_name defualt charater set utf8;
脚本、窗口
只修改character_set_client
、character_set_connection
、
character_set_results
编码方式,且只对当前窗口、脚本有效,
不影响数据库底层编码方式