喵唔,虽然我现在很困很累,但是我要坚持在医院把今晚的mysql搭建实录写下来,记录今晚的心酸屎
----------------------------------------------华丽的分割线------------------------------------------------------------------------
centos7搭建mysql环境
首先centos7 已经不支持mysql,内部集成了mariadb,而安装mysql的话会和mariadb的文件冲突,所以需要先卸载掉mariadb,以下为卸载mariadb,安装mysql的步骤。
#列出所有被安装的rpm package
rpm -qa | grep mariadb
强制卸载
rpm -e --nodeps mariadb-libs-5.5.37-1.el7_0.x86_64
CentOS7的yum源中默认好像是没有mysql的。为了解决这个问题,我们要先下载mysql的repo源。
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
安装mysql-community-release-el7-5.noarch.rpm包
sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
安装mysql
sudo yum install mysql-server
这样就搞定啦,然后第一步要重置代码
登录时有可能报这样的错:ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock‘ (2),原因是/var/lib/mysql的访问权限问题。下面的命令把/var/lib/mysql的拥有者改为当前用户:
sudo chown -R openscanner:openscanner /var/lib/mysql
然后,重启服务:
$ service mysqld restart
接下来登录重置密码:
$ mysql -u root
mysql > use mysql;
mysql > update user set password=password(‘123456‘) where user=‘root‘;
mysql > exit;
ps:这样我在做的时候没有成功,所以你可以再尝试下面的方法
方法1: 用SET PASSWORD命令
mysql -u root
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
方法2:用mysqladmin
mysqladmin -u root password "newpass"
如果root已经设置过密码,采用如下方法
mysqladmin -u root password oldpass "newpass"
方法3: 用UPDATE直接编辑user表
mysql -u root
mysql> use mysql;
mysql> UPDATE user SET Password = PASSWORD('newpass') WHERE user = 'root';
mysql> FLUSH PRIVILEGES;
在丢失root密码的时候,可以这样
mysqld_safe --skip-grant-tables&
mysql -u root mysql
mysql> UPDATE user SET password=PASSWORD("new password") WHERE user='root';
mysql> FLUSH PRIVILEGES;
然后重启
如何启动/停止/重启MySQL
一、启动方式
1、使用 service 启动:service mysqld start
2、使用 mysqld 脚本启动:/etc/inint.d/mysqld start
3、使用 safe_mysqld 启动:safe_mysqld&
二、停止
1、使用 service 启动:service mysqld stop
2、使用 mysqld 脚本启动:/etc/inint.d/mysqld stop
3、mysqladmin shutdown
三、重启
1、使用 service 启动:service mysqld restart
2、使用 mysqld 脚本启动:/etc/inint.d/mysqld restart
提问 编辑摘要
如何启动/停止/重启MySQL
一、启动方式
1、使用 service 启动:service mysqld start
2、使用 mysqld 脚本启动:/etc/inint.d/mysqld start
3、使用 safe_mysqld 启动:safe_mysqld&
二、停止
1、使用 service 启动:service mysqld stop
2、使用 mysqld 脚本启动:/etc/inint.d/mysqld stop
3、mysqladmin shutdown
三、重启
1、使用 service 启动:service mysqld restart
2、使用 mysqld 脚本启动:/etc/inint.d/mysqld restart
然后接下来要解决乱码问题:
mysql中文乱码问题
回到刚刚的问题,更新数据,数据中带中文,不成功,错误大概是这样的
MYSQL写入数据时报错ERROR 1366 (HY000): Incorrect string value: '\xE8\x8B\xB1\xE5\xAF\xB8...' for c
然后,我们要做的主要就是将mysql的编码都改为utf-8.这个问题,我之前在我的window的mysql下解决过,主要就是改my.ini文件,将latin1的都改为utf-8.
- [mysql]
- default-character-set=utf8
还是从头说下,首先,要从终端进入mysql,或者在mysql weorkbench中,输入[show variables like 'character%'],
然后发现,database和server都是latin1,所以需要修改这两个为utf-8.输入命令[vi /etc/my.cnf],打开,发现我的my.cnf中的内容,比我看到的所有人提供的资料中的内容都要少.比如这篇文章中CentOS 6.5安装MySQL中文乱码问题解决 ,说
- [client]
- default-character-set = utf8 #这个是我添加的
只有这一句是他添加的,可是我的my.cnf中根本没有[client],也没有[mysql],只有一个[mysqld].于是我根据这篇文章中的,CentOS7下让MySQL支持中文 内容修改,基本上全部拷贝他提供的,比如他在[mysql]中添加最后一句,我则是将这三句都拷过来.
[mysql]
no-auto-rehash
default-character-set=utf8
最后说明下我主要加了,这些东西,最后,大概是变成这样.对于mysqld,不仅改变了server的编码,并且还设置新建的表的存储引擎和排序规则.
- [mysqld]
- port = 3306
- socket = /var/lib/mysql/mysql.sock
- default-storage-engine=INNODB
- character-set-server=utf8
- collation-server=utf8_general_ci
- [client]
- port = 3306
- socket = /var/lib/mysql/mysql.sock
- default-character-set=utf8
- [mysql]
- no-auto-rehash
- default-character-set=utf8
然后,在终端,输入【service mysql restart】,重启mysql服务.如果,此时终端在mysql中,输入【exit】,退出mysql.再输入【service mysql restart】,就可以了.PS,如果你的my.cnf改的有问题的话,【service mysql restart】会执行很长时间,表示不成功的.而没有问题的话,大概3-4秒中,重启就可以完成了.
然后再查看【show variables like 'character%'】,数据库编码就成功了,都是utf-8,除了filesystem,一直都是binaray,二进制外.
然后为了以防万一,重新建立数据库officialsystem,然后用命令【show create databse officialsytem】,看出数据库的编码,为utf8.
接下来,还是初始化一遍管理员的数据,和backstage的数据,通过界面更新backstage数据,成功.
linux删除目录很简单,很多人还是习惯用rmdir,不过一旦目录非空,就陷入深深的苦恼之中,现在使用rm -rf命令即可。
直接rm就可以了,不过要加两个参数-rf 即:rm -rf 目录名字
-r 就是向下递归,不管有多少级目录,一并删除
-f 就是直接强行删除,不作任何提示的意思
KO 搞定
通过MySQL命令行修改:(编码可选)
mysql> set character_set_client=utf8;
mysql> set character_set_connection=utf8;
mysql> set character_set_database=utf8;
mysql> set character_set_results=utf8;
mysql> set character_set_server=utf8;
mysql> set character_set_system=utf8;
mysql> set collation_connection=utf8;
mysql> set collation_database=utf8;
mysql> set collation_server=utf8;