评论

收藏

[MySQL] 从安装mysql到初学时遇到的问题及解决方案

数据库 数据库 发布于:2021-07-04 11:44 | 阅读数:346 | 评论:0

  一、windows安装mysql
  1、设置系统环境变量
  在系统环境变量里新建系统变量
  变量名为:MYSQL_HOME
  变量值为:mysql的安装路径
  在Path路径里加一路经:%MYSQL_HOME%\bin
  2、将my-default.ini改成my.ini
  3、修改my.ini文件
  basedir = \\mysql的安装路径
  datadir = \\mysql的安装文件下bin目录的路径
  port = 3306
  4、启动mysql服务
  进入命令行模式输入
  net start MySQL 启动服务
  net stop MySQL 关闭服务
  5、修改root密码
c:>mysql -u root   //进入mysql
  mysql>show databases;
  mysql>use mysql;
  mysql>update user set password=password("密码") where      user='root';
  mysql>flush privileges;
  mysql>quit
  二、连接MySQL
  格式: mysql -h主机地址 -u用户名 -p用户密码
  1、例1:连接到本机上的MYSQL。
  mysql -u root -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接     回车即可进入到 MYSQL中了,MYSQL的提示符是: mysql>。
  2、例2:连接到远程主机上的MYSQL。假设远程主机的IP为:  110.110.110.110,用户名为root,密码为    abcd123。则键入以下命令:
  mysql -h110.110.110.110 -uroot -pabcd123
  (注:u与root可以不用加空格,其它也一样)
  3、退出MYSQL命令: exit (回车)。
  三、修改密码
  格式:mysqladmin -u用户名 -p旧密码 password 新密码
  1、例1:给root加个密码ab12。首先在DOS下进入目录mysqlbin,然   后键入以下命令:
  mysqladmin -uroot -password ab12
  注:因为开始时root没有密码,所以-p旧密码一项就可以省略了    。
  2、例2:再将root的密码改为djg345。
  mysqladmin -uroot -pab12 password djg345
  四、增加新用户。(注意:和上面不同,下面的因为是MySQL环境中的 命令,所以后面都带一个分号作为命令   结束符)
  格式:grant select on 数据库.* to 用户名@登录主机 identified by \"密码\"
  例1、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修        改、删除的权限。首先用以root用户连入MySQL,然后键入以下命令:
  grant select,insert,update,
  delete on *.* to test2@localhost identified by \"abc\";
  如果你不想test2有密码,可以再打一个命令将密码消掉。
  grant select,insert,update,delete on mydb
  .* to test2@localhost identified by \"\";
  在上面讲了登录、增加用户、密码更改等问题。下面我们来看看MySQL中有关数据库方面的操作。注意:你   必须首先登录到MySQL中,以下操作都是在MySQL的提示符下进行的,而且每个命令以分号结束。
  五、字符集出现错误解决办法:
  

  ①、出现问题如下:
mysql> update users
-> set username='关羽'
-> where userid=2;
ERROR 1366 (HY000): Incorrect string value: '\xB9\xD8\xD3\xF0' for column 'usern
ame' at row 1
  

  ②、表中插入的字符显示出错如下:
mysql> select * from users;
+--------+----------+
| userid | username |
+--------+----------+
| 2 | ???? |
| 3 | ???? |
| 4 | ?í?ù |
+--------+----------+
3 rows in set (0.00 sec)
  表中的中文字符位乱码。
  使用命令status
mysql> status
--------------
mysql Ver 14.12 Distrib 5.0.45, for redhat-linux-gnu (i686) using readline 5.0 Connection id: 30
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout Using outfile: ''
Using delimiter: ;
Server version: 5.0.45 Source distribution
Protocol version: 10
Connection:Localhost via UNIX socket
Server characterset: latin1
Db characterset: latin1
Client characterset: latin1 Conn. characterset: latin1
UNIX socket: /var/lib/mysql/mysql.sock
Uptime: 33 days 58 min 53 sec
 Threads: 1 Questions: 72 Slow queries: 0 Opens: 25 Flush tables: 1 Open tables: 18 Queries per second avg: 0.000
--------------
       查看mysql发现Server characterset,Db characterset的字符集设成了latin1,所以出现中文乱码。
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| users |
+----------------+
1 row in set (0.00 sec)
//更改表的字符集。
mysql> alter table users character set GBK;
Query OK, 3 rows affected (0.08 sec)
Records: 3 Duplicates: 0 Warnings: 0
//查看表的结构:
mysql> show create table users;
+-------+-----------------------------------------------------------------------
------------------------------------------------------------------------------+
| Table | Create Table
|
+-------+-----------------------------------------------------------------------
------------------------------------------------------------------------------+
| users | CREATE TABLE `users` (
`userid` int(11) default NULL,
`username` char(20) character set latin1 default NULL
) ENGINE=InnoDB DEFAULT CHARSET=gbk |
+-------+-----------------------------------------------------------------------
------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> desc users;
+----------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+----------+------+-----+---------+-------+
| userid | int(11) | YES | | NULL | |
| username | char(20) | YES | | NULL | |
+----------+----------+------+-----+---------+-------+
2 rows in set (0.02 sec)
  

  这时向表中插入中文然后有错误。
mysql> insert into users values(88,'中文');
ERROR 1366 (HY000): Incorrect string value: '\xD6\xD0\xCE\xC4' for column 'usern
ame' at row 1
  

  还要更改users表的username的字符集。
mysql> alter table users modify username char(20) character set gbk;
ERROR 1366 (HY000): Incorrect string value: '\xC0\xEE\xCB\xC4' for column 'usern
ame' at row 1
  因为表中已经有数据,所以更改username字符集的操作没有成***
  

  清空users表中的数据
mysql> truncate table users;
Query OK, 3 rows affected (0.01 sec)
  

  从新更改user表中username的字符集
mysql> alter table users modify username char(20) character set gbk;
Query OK, 0 rows affected (0.06 sec)
Records: 0 Duplicates: 0 Warnings: 0
  这时再插入中文字符,插入成***。
mysql> insert into users values(88,'中文');
Query OK, 1 row affected (0.01 sec)
mysql> select * from users;
+--------+----------+
| userid | username |
+--------+----------+
| 88 | 中文 |
+--------+----------+
1 row in set (0.00 sec)
mysql>
  六、在linux下对mysql进行C编程问题:
  要指明库文件mysql.h的路径,一般为
  /usr/include/mysql/mysql.h
  编译时要指明libmysqlclient.so的路径:
  /usr/lib/mysql/libmysqlclient.so
  命令为 : gcc 点C文件名 /usr/lib/mysql/libmysqlclient.so
  


  
关注下面的标签,发现更多相似文章