mysql数据库安装和一般配置

mysql
>>>我的博客<<<

同事那里的总结拿过来自己保存一份,类似的教程太多了。

在linux上安装mysql server,进行常规设置

MySQL数据库安装

  1. 安装

    # 更新包索引
    sudo apt-get update
    
    # 安装
    sudo apt-get install mysql-server
    

    安装过程中会提示设置root密码。

  2. 设置

    # 执行安全脚本设置
    sudo mysql_secure_installation
    
    # 执行初始化脚本(按此方法安装不用执行)
    
    # 5.7.6之前的版本执行
    mysql_install_db
    
    # 5.7.6及后续版本执行
    mysqld --initialize
    
  3. 测试

    # 查看mysql运行状态
    systemctl status mysql.service
    
    # 启动Mysql
    sudo systemctl start mysql
    
    # 停止Mysql
    sudo systemctl stop mysql
    
    # 重启Mysql
    sudo systemctl restart mysql
    

MySQL数据库配置

按此种方式安装完Mysql后,配置文件默认位于/etc/msyql下,其中mysql.conf.d下的mysqld.cnf用于配置服务端,conf.d下的mysql.cnf用于配置客户端。

  1. 忽略大小写
# 编辑my.cnf文件
vim /etc/my.cnf

# 在[msyqld]下添加如下代码
[mysqld]
lower_case_table_names=1
  1. 设置编码格式为utf8mb4,并支持emoji表情
# 编辑my.cnf文件
vim /etc/my.cnf
[client]

default-character-set=utf8mb4

[mysqld]

character-set-client-handshake = FALSE

character-set-server = utf8mb4

collation-server = utf8mb4_unicode_ci

init_connect=’SET NAMES utf8mb4'

[mysql]

default-character-set=utf8mb4

数据库、表和字段的设置分别如下:

1) 修改database的字符集:

ALTER DATABASE 数据库名 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

示例:

ALTER DATABASE xxxdb CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

2) 步骤1)执行完成之后,需要执行use 数据库名,指明当前需要进行字符集修改的数据库;示例:use xxxdb;

3)修改table的字符集:

ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

示例:

ALTER TABLE user_comments CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

4) 修改column的字符集:

ALTER TABLE 表名 CHANGE 字段名 字段名 该字段原来的数据类型 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

示例:

ALTER TABLE user_comments CHANGE content content TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

  1. 设置max_allowed_package
# 编辑my.cnf文件
vim /etc/my.cnf
[mysqld]
max_allowed_packet=100M
  1. 允许远程访问

4.1 排队网络或防火墙问题

先看能否ping通远程服务器,如果不可以就是网络问题。然后,检查端口是否被防火墙挡住了

telnet ip地址 3306

如果连接失败,配置防火墙

# 防火墙放开Mysql端口
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT   
iptables -A OUTPUT -p tcp --dport 3306 -j ACCEPT

4.2 检查MySQL配置
如果开启了防火墙,telnet还是失败,通过netstat查看3306的端口状态

netstat -apn | grep 3306

# 返回结果
tcp6 0 0 127.0.0.1:3306 :::* LISTEN 13524/mysqld

如果显示127.0.0.1:3306表示3306被绑定到了本地。需要修改mysqld.conf

# 编辑mysqld.cnf文件
vim /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
bind-address=addr

不配置或者IP配置为0.0.0.0,表示监听所有客户端连接。

4.3 检查用户访问权限 MySQ建用户的时候会指定一个host,默认是127.0.0.1/localhost,那么这个用户就只能本机访问,其他机器用这个账号访问会提示没有权限,host改为%,表示允许所有机器访问。

# 登录mysql服务器
mysql -uroot -p

# 使用mysql数据库
mysql> use mysql;
Database changed

# 修改root用户访问权限
mysql> update user set host='%' where user='root';
Query OK, 0 rows affected(0.00 sec)
Row matched: 1 Changed: 0 Warnings: 0

# 查看结果
mysql> select host, user from user;
+------+-------+
|host  |user    |
+------+-------+
|%     |root    |

重启Mysql使用修改生效

  1. 设置开机启动及禁止
# 禁止启动
sudo systemctl disable mysqld

# 开机启动
sudo systemctl enable mysqld

MySQL用户及数据库/表权限配置

基本操作命令:

  • 1、查询用户权限
show grants for username;
  • 2、用户授权
grant select on db.* to username;
  • 3、回收用户权限
revoke select on db.* from username;(权限不存在会报错)

1、新建用户

1.1 登录MYSQL:
  root@bin>mysql -u root -p
Enter password: **********
  1.2 创建用户:

mysql> insert into mysql.user(Host,User,Password) values("localhost","demo",password("1234"));

这样就创建了一个名为:demo 密码为:1234 的用户。

注意:此处的"localhost",是指该用户只能在本地登录,不能在另外一台机器上远程登录。如果想远程登录的话,将"localhost"改为"%",表示在任何一台电脑上都可以登录。也可以指定某台机器可以远程登录。

1.3 然后登录一下:

mysql>exit;

root@bin>mysql -u demo -p
Enter password: **********

2、用户授权

授权格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码";

2.1 登录MYSQL(有ROOT权限),这里以ROOT身份登录:

root@bin>mysql -u demo -p
Enter password: **********

2.2 首先为用户创建一个数据库(testDB):

mysql>create database demoDB;

2.3 授权test用户拥有testDB数据库的所有权限(某个数据库的所有权限):

mysql>grant all privileges on demoDB.* to demo@localhost identified by '1234';

mysql>flush privileges;//刷新系统权限表

格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码";

2.4 如果想指定部分权限给一用户,可以这样来写:

mysql>grant select,update on demoDB.* to demo@localhost identified by '1234';

mysql>flush privileges; //刷新系统权限表

2.5 授权test用户拥有所有数据库的某些权限:

mysql>grant select,delete,update,create,drop on . to demo@"%" identified by "1234";

 //test用户对所有数据库都有select,delete,update,create,drop 权限。

//@"%" 表示对所有非本地主机授权,不包括localhost。(localhost地址设为127.0.0.1,如果设为真实的本地地址,不知道是否可以,没有验证。)

//对localhost授权:加上一句grant all privileges on demoDB.* to demo@localhost identified by '1234';即可。

2、删除用户

root@bin>mysql -u demo -p
Enter password: **********
  mysql>Delete FROM user Where User='demo' and Host='localhost';
  mysql>flush privileges;
  mysql>drop database demoDB; //删除用户的数据库
删除账户及权限:>drop user 用户名@'%';
        >drop user 用户名@ localhost;

2、修改用户密码

root@bin>mysql -u demo -p
Enter password: **********
  mysql>update mysql.user set password=password('新密码') where User="demo" and Host="localhost";
  mysql>flush privileges;

说明:grant和revoke可以在几个层次上控制访问权限
1.整个服务器:grant all /revoke all
2.整个数据库:on database.*
3.特定的表:on database.table
4.特定的列:grant select(id, se, rank) on testdb.apache_log to dba@localhost;
5.特定的存储过程:grant execute on procedure testdb.pr_add to ’dba’@’localhost’
6.特定的函数:grant execute on function testdb.fn_add to ’dba’@’localhost’

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,240评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,328评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,182评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,121评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,135评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,093评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,013评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,854评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,295评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,513评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,398评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,989评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,636评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,657评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容