Mysql 是最流行的关系型数据库管理系统,尤其是在Web应用方面。 Mysql,由瑞典MySQL AB公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。 Mysql是开源的、免费的、支持大型的数据库 Mysql使用标准的SQL数据语言形式。
代码语言:javascript复制ps: ${ xxx } 表示 xxx 是变量
mysql安装
Mac 系统用 brew 安装mysql
安装mysql
代码语言:javascript复制brew update # 更新下brew
brew install mysql # brew安装 mysql
设置 MySQL 用户以及数据存放地址
代码语言:javascript复制$ unset TMPDIR
$ mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp
忘记mysql数据库密码
代码语言:javascript复制update user set authentication_string=password('my_password') where user='root';
修改密码
代码语言:javascript复制SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
可能遇到的问题
错误码:ERROR 1045 (28000)
代码语言:javascript复制cd /etc
sudo vim my.cnf
编辑如下代码到 my.cnf 文件,保存成功应该就可以了
[mysqld]
skip-grant-tables
lower_case_table_names=1
权限不足的时候可以创建一个账号
代码语言:javascript复制CREATE USER 'golden'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON * . * TO 'golden'@'localhost';
FLUSH PRIVILEGES;
启动mysql
代码语言:javascript复制mysql.server start
sudo /etc/init.d/mysql start
or
sudo /usr/local/mysql/support-files/mysql.server start;
开机启动mysql
代码语言:javascript复制/etc/init.d/mysqld start
通过sql文件执行脚本
代码语言:javascript复制source /Users/zsr/learn/crawler/sql/createtable.sql;
or
mysql -D samp_db -u root -p < createtable.sql
登录 mysql
代码语言:javascript复制mysql -u ${ databasename } -p # 然后输入mysql密码
创建一个数据库,设置character是为了兼容汉字
代码语言:javascript复制create database ${newdatabasename} character set gbk;
查看所有的数据库
代码语言:javascript复制show databases;
删除数据库
代码语言:javascript复制drop database ${databasename};
选中 testdb 数据库
代码语言:javascript复制use ${databasename};
创建一张表
代码语言:javascript复制use ${databasename}
create table students
(
id int unsigned not null auto_increment primary key,
name char(8) not null,
sex char(4) not null,
age tinyint unsigned not null,
tel char(13) null default "-"
);
修改表名
代码语言:javascript复制alter table ${oldtablename} rename to ${newtablename};
查看所有表
代码语言:javascript复制show tables;
删除表
代码语言:javascript复制drop table ${tabename};
显示数据表的属性,属性类型,主键信息
代码语言:javascript复制show columns from students
查看列
代码语言:javascript复制desc ${tablename};
添加列
代码语言:javascript复制alter table ${tablename} add column ${newcolumnname} varchar(30);
删除列
代码语言:javascript复制alter table ${tablename} drop column ${columnname};
修改列名
代码语言:javascript复制alter table ${tablename} change ${ondcolumnname} ${newcolumnname} int;
修改列属性
代码语言:javascript复制alter table ${tablename} modify ${oldattr} char(80);
增加数据
代码语言:javascript复制insert into ${tablename} values (${column1}, ${column2}); /*如果自增id,则column1为0*/
修改数据
代码语言:javascript复制update ${tablename} set ${attr}=${newAttr} where ${id=3}; /*id=3代表查询条件*/
查询数据
代码语言:javascript复制select * from ${tablename} where ${id=3};
删除数据
代码语言:javascript复制delete from ${tablename} where ${id=3};
详细的常用查询操作 1.查询从第n条开始的m条数据、asc 升序(desc 降序)
代码语言:javascript复制select * from ${tablename} limit n,m;
select ${column1},${column2} from ${tablename} order by ${column} asc limit n,m
select ${column1},${column2} from ${tablename} order by ${column} desc limit n,m
查看数据库编码
代码语言:javascript复制show variables like 'character%';
查看数据库位置
代码语言:javascript复制show variables like 'datadir%'
数据库中文乱码
代码语言:javascript复制mysql> show variables like '%char%';
-------------------------------------- ----------------------------
| Variable_name | Value |
-------------------------------------- ----------------------------
| character_set_client | latin1 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
| validate_password_special_char_count | 1 |
-------------------------------------- ----------------------------
set character_set_client=utf8;
mysql 数据库中文乱码是因为数据库默认的编码方式是 latin1 解决办法就是将其手动改为utf8即可 但是这只是临时办法,变量只是session级别的存储,数据库重启之后就没了
代码语言:javascript复制sudo vim /etc/mysql/my.cnf
or
sudo vim /etc/my.cnf
在my.cnf 文件里面配置数据库的编码集
代码语言:javascript复制[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
备份数据
代码语言:javascript复制mysqldump -udbusername -pdbpwd dbname > ./epoos.sql
scp -r root@xxx.193.173.xx:/xxx/xxx/xxx/epoos.sql /Users/zsr/epoos
还原数据
代码语言:javascript复制mysql -h127.0.0.1 -uroot -p123456 epoos < epoos.sql
如果上面的还原功能不好使,可以
代码语言:javascript复制1.创建新数据库 newdb
2.use newdb
3.执行备份的sql文件
ubuntu安装mysql
代码语言:javascript复制sudo apt-get update
sudo apt-get install mysql-server # 安装 mysql 服务端
mysql_secure_installation # mysql 安装安全配置向导,设置密码
执行安全配置向导可能报如下错误:
代码语言:javascript复制# 报错信息
Error: Access denied for user 'root'@'localhost'
解决方案:
代码语言:javascript复制sudo -iu root # 用 root 用户执行此命令即可
mysql_secure_installation
# 中文解释
1)为root用户设置密码;
2)删除匿名账号;
3)取消root用户远程登录;
4)删除test库和对test库的访问权限;
5)刷新授权表使修改生效。
新建新用户
代码语言:javascript复制# 创建 dev 用户
mysql> CREATE USER 'dev'@'%' IDENTIFIED BY 'Abc123456!';
# 给用户 dev 所有数据库的权限
mysql> grant all PRIVILEGES on *.* to 'dev'@'%' IDENTIFIED BY 'Abc123456!';
# 刷新配置
flush privileges;
如果遇到创建失败
代码语言:javascript复制ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'mysql> grant all PRIVILEGES on *.* to 'dev'@'%'' at line 1
可能是因为新版的的mysql版本已经将创建账户和赋予权限的方式分开了,可使用如下命令。
代码语言:javascript复制GRANT ALL PRIVILEGES ON *.* TO 'dev'@'%' WITH GRANT OPTION;
远程端口不通
代码语言:javascript复制# 测试端口是否通顺
telnet 10.216.8.142 3306
mysql 数据库经常会遇到本地能连通但是其它机器通过 ip 访问的时候就不通的情况。 排查可以从下面三种情形入手(具体方式可以网上搜一搜,很多,这里就不列了)
这种情形比较常见的原因有三个: 1.机器防火墙 3306 端口没有开 2.登录的数据库用户没有开 ip 访问的权限,找到user表,赋予其 % 权限。 3.数据库初始的时候地址没有注释掉 bind-address
代码语言:javascript复制# 这个文件配置可能在/etc/my.cnf/;/etc/mysql/my.cnf;也可能在 /etc/mysql/mysql.conf.d
# 具体情形根据系统有所不同,但是只需要找到 bind-address 将其注释掉即可
#bind-address = 127.0.0.1
卸载mysql
把下面几个目录全部删掉应该就可以完全卸载mysql了 值得注意的是,如果有数据库需要备份的,需提前做好备份。
代码语言:javascript复制rm -rf ~/Library/PreferencePanes/My*
sudo rm -rf /Library/Receipts/mysql*
sudo rm -rf /Library/Receipts/MySQL*
sudo rm -rf /var/db/receipts/com.mysql.*
sudo rm /usr/local/mysql
sudo rm -rf /usr/local/mysql*
sudo rm -rf /Library/StartupItems/MySQLCOM
sudo rm -rf /Library/PreferencePanes/My*
相关链接
https://dev.mysql.com/doc/refman/5.6/en/linux-installation.html