Akagi201
5/3/2014 - 8:40 AM

mysql.md

client

  • sequel pro

InnoDB

issues

安装

  1. brew install mysql
  2. mysql -uroot #初始没有设置密码
  3. 配置
  4. http://blog.joefallon.net/2013/10/install-mysql-on-mac-osx-using-homebrew/
  5. 启动: mysql.server start
[client]
port = 3306
socket = /tmp/mysql.sock
default-character-set = utf8

[mysqld]
collation-server = utf8_unicode_ci
character-set-server = utf8
init-connect ='SET NAMES utf8'
max_allowed_packet = 64M
bind-address = 127.0.0.1
port = 3306
socket = /tmp/mysql.sock
  1. ip访问权限 - /etc/mysql/my.conf - bind-address 0.0.0.0
  2. /etc/apache2/sites-available/default - DocumentRoot /var/www/daloradius

web管理 - phpmyadmin

  • sudo aptitude install -y phpmyadmin
  • sudo ln -s sudo ln -s /usr/share/phpmyadmin /var/www
  • 访问 http://IP/phpmyadmin/

MySQL用户

  • MySQL数据库默认只有一个root用户.
  • MySQL将用户信息保存在mysql数据库user表中.
  • 创建一个新的用户: CREATE USER 用户名 IDENTIFIED BY '密码';
  • 新用户创建后是不能登陆的, 因为没有设置权限.
  • 删除用户: DROP USER 用户名;
  • 重命名用户: RENAME USER 原用户名 TO 新用户名;
  • 修改当前用户密码: SET PASSWORD = PASSWORD('新密码');
  • 修改指定用户密码: SET PASSWORD FOR 用户名=PASSWORD('新密码');

MySQL权限系统

  • MySQL权限系统控制一个用户是否能进行连接, 以及连接后能够针对那些对象进行什么操作.
  • MySQL权限控制包含2个阶段: 1. 检查用户能否连接; 2. 检查用户是否具有所执行动作的权限.

MySQL权限层级

MySQL授予权限可分为以下几个层级:

  1. 全局层级.
  2. 数据库层级.
  3. 表层级.
  4. 列层级.
  5. 子程序层级.

MySQL授权命令

  • MySQL通过GRANT授予权限, REVOKE撤销权限.
  • 授予一个用户权限: GRANT ALL PRIVILEGES ON 层级 to 用户名@主机 IDENTIFIED BY 密码;
  • 撤销一个用户权限: REVOKE ALL PRIVILEGES FROM 用户名;

MySQL连接认证

  • 当连接MySQL服务时, MySQL通过用户名密码和主机信息验证是否允许连接.
  • 这里的主机是指允许从哪个主机进行连接, 可以使用如下形式:
  1. 所有主机: '%';
  2. 精确的主机名或IP地址: www.linuxcast.net 或 192.168.1.1
  3. 使用"*"通配符: *.linuxcast.net
  4. 指定一个网段: 192.168.1.0/255.255.255.0

MySQL备份恢复

  • MySQL使用最为广泛的备份恢复工具是mysqldump.
  • 备份一个指定数据库: mysqldump -u root -p 数据库名称 > 备份文件.sql.
  • mysqldump备份出来的是纯文本的SQL文件, 可以修改后作为其他数据库使用.
  • 从备份的SQL文件恢复一个指定数据库: mysql -u root -p 数据库名称 < 备份文件.sql.

数据库编码

  • 数据库使用一个特定编码保存数据, 如latin, Big5, GB2312, UTF8等, 不同语言一般使用不同编码保存.

编码主要影响一下两个方面

  1. 数据库保存相同内容所占用的空间大小.
  2. 数据库与客户端通信.

MySQL编码

  • MySQL数据库的默认编码是: character set: latin1 collation: latin1_swedish_ci

  • 可以通过一下命令查看MySQL支持的编码: SHOW CHARACTER SET;

  • 查看MySQL当前使用的编码: SHOW VARIABLES LIKE 'character_set%'SHOW VARIABLES LIKE 'collation%'

  • 创建数据库的时候可以使用一下命令指定编码:

CREATE DATABASE linuxcast
DEFAULT CHARACTER SET utf8
DEFAULT COLLATE utf8_general_ci;
  • 也可以通过一下命令修改一个数据库的编码:
AlTER DATABASE linuxcast CHARACTER SET utf8 COLLATE utf8_general_ci;
  • 通过修改MySQL配置文件my.cnf设置MySQL默认编码:
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
default-character-set=utf8
collation-server=utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8

修改后重启MySQL服务, 通过以下命令查看默认编码: SHOW VARAIBLES LIKE 'character_set%';

问题

Couldn't find MySQL server (/usr/bin/mysqld_safe)

Refs